sedを使用してAIXのrc.tcpipでsnmpmibdとsnmpdをコメントアウトする方法は?

sedを使用してAIXのrc.tcpipでsnmpmibdとsnmpdをコメントアウトする方法は?

/etcのrc.tcpipファイルにあるエントリをコメントアウトする必要があります。

# snmpmibd デーモンを起動します。
start /usr/sbin/snmpmibd "$src_running"

#シンプルネットワーク管理プロトコル(SNMP)デーモンを起動します。
start /usr/sbin/snmpd "$src_running"

この行にどのように注釈を付けることができますかsed

答え1

で始まる行をコメントアウトするには、代替start /usr/sbin/snmpmibdテキストにアンカーとパターンを含むコマンドを使用しますs。ここで、プラスは置き換えられたテキストを表します。 2行を別々に一致させるか、欠けている部分(明確さを犠牲にして簡潔)を記録して使用することができます。パターンにスラッシュが含まれているので、他の文字を区切り文字として使用してください。フィルタなので、出力を新しいファイルに書き込み、新しいファイルを所定の位置に移動する必要があります(出力を入力と同じファイルにリダイレクトすることは機能しません。最初に古いファイルを削除してから移動を開始します)。 )²を実行します。^#&snmpdsnmpmibdmibsnmp\(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

ファイルを所定の位置に編集するには、次のものを使用できます。編集するsedの代わりに。

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

¹AIXにはor演算子がなく、BREのみが起動され、動作しません。\?\|\(snmpmibd\|snmpd\)
²AIX sedいいえ-i、これはGNU拡張です。

答え2

-i を許可しない AIX sed についてのコメントをいただいた Gilles に感謝します。

コメントライン

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

/yourRegExFilterPattern/選択するオンラインフィルタは、次の前に追加できますs

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

あるいは、複雑なフィルタではより効率的ですが、読みにくい(単純なフィルタの場合は該当しませんstart)。

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

行のコメントを削除する(実際のコメントのコメントを削除しないようにするには、直接フィルタリングパターンが必要です)

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

ルートでない場合、このファイルを変更するには追加の権限が必要になる可能性があるため、aがsudo重要です。

/etc/rc.tcpip場合に備えて、以前のバックアップのコピーを作成することをお勧めします。

答え3

/etc/rc.tcpip次のコマンドを実行して、アイテムをコメントアウトします。snmpd

chrctcp -d snmpd

関連情報