Wie kann ich snmpmibd und snmpd in rc.tcpip in AIX mit sed auskommentieren?

Wie kann ich snmpmibd und snmpd in rc.tcpip in AIX mit sed auskommentieren?

Ich muss einen Eintrag in der Datei rc.tcpip in /etc auskommentieren

# Starten Sie den snmpmibd-Daemon
start /usr/sbin/snmpmibd "$src_running"

# Starten Sie den Simple Network Management Protocol (SNMP)-Daemon
start /usr/sbin/snmpd "$src_running"

Wie kommentiere ich diese Zeilen mit sed?

Antwort1

Um Zeilen, die mit beginnen, auszukommentieren start /usr/sbin/snmpmibd, verwenden Sie den sBefehl mit einem Muster, das den ^Anker und #im Ersetzungstext verwendet, plus , &das für den ersetzten Text steht. Sie können die beiden Zeilen entweder separat abgleichen oder beachten, dass mit ausgelassen snmpdwurde (Prägnanz auf Kosten der Klarheit)¹ und verwenden . Da das Muster einen Schrägstrich enthält, verwenden Sie ein anderes Zeichen als Trennzeichen, z. B. . Da es sich bei um einen Filter handelt, müssen Sie die Ausgabe in eine neue Datei schreiben und dann die neue Datei an ihren Platz verschieben (das Umleiten der Ausgabe von in dieselbe Datei wie die Eingabe würde nicht funktionieren: Es würde zuerst die alte Datei löschen und dann mit dem Lesen aus der nun leeren Datei beginnen)².snmpmibdmibsnmp\(mib\)\{0,1\}d!sedsed

sed -e 's!^start /usr/sbin/snmpmibd !#&!' -e 's!^start /usr/sbin/snmpmibd !#&!' </etc/rc.tcpip >/etc/rc.tcpip.new
mv /etc/rc.tcpip.new /etc/rc.tcpip

Um eine Datei direkt zu bearbeiten, können Sie verwendenEd.anstelle von sed.

ed -s /etc/rc.tcpip <<'EOF'
g!^start /usr/sbin/snmpd ! s/^/#/
g!^start /usr/sbin/snmpmibd ! s/^/#/
w
q
EOF

¹ AIX hat keine \?oder \|-Operatoren, hat nur BRE gestartet, \(snmpmibd\|snmpd\)funktioniert also nicht.
² AIX sed hat kein -i, das ist eine GNU-Erweiterung.

Antwort2

Vielen Dank an Gilles für den Hinweis, dass AIX sed -i nicht zulässt.

zu Kommentarzeilen

sed 's/^[[:space:]]*[^#]/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip 

Zur Auswahl könnte ein Online-Filter erstellt werden, indem man /yourRegExFilterPattern/davor sFolgendes hinzufügt:

sed '/start/ s/^[[:space:]]*[^#]/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip 

oder, effizienter, aber weniger lesbar bei komplexen Filtern (was hier bei einem einfachen nicht der Fall ist start)

sed 's/^[[:space:]]*start/#&/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip 

um Zeilen zu kommentieren (benötigt das Filter-Direktmuster, um das Kommentieren echter Kommentare zu vermeiden)

sed '/YourSelectionPattern/ s/^\(^[[:space:]]*\)#/\1/' /etc/rc.tcpip > /tmp/rc.tcpip
cat /tmp/rc.tcpip /etc/rc.tcpip
rm /tmp/rc.tcpip 

Wenn Sie kein Root-Benutzer sind, benötigen Sie möglicherweise zusätzliche Rechte zum Ändern dieser Datei. sudoDer Schlüssel ist daher „a“.

/etc/rc.tcpipIch empfehle außerdem , vorsichtshalber eine Sicherungskopie von „vorher“ zu erstellen .

Antwort3

/etc/rc.tcpipKommentieren Sie in den Eintrag aus, indem Sie den snmpdfolgenden Befehl ausführen:

chrctcp -d snmpd

verwandte Informationen