Как закомментировать snmpmibd и snmpd в rc.tcpip в AIX с помощью sed?

Как закомментировать snmpmibd и snmpd в rc.tcpip в AIX с помощью sed?

Мне нужно закомментировать запись в файле rc.tcpip внутри /etc

# Запустить демон snmpmibd
start /usr/sbin/snmpmibd "$src_running"

# Запустить демон простого протокола сетевого управления (SNMP)
start /usr/sbin/snmpd "$src_running"

Как мне прокомментировать эти строки, используя sed?

решение1

Чтобы закомментировать строки, начинающиеся с start /usr/sbin/snmpmibd, используйте sкоманду с шаблоном, используя ^якорь и #в тексте замены, плюс, &который обозначает заменяемый текст. Вы можете либо сопоставить две строки по отдельности, либо заметить, что snmpdс snmpmibdопущенным mib(краткость за счет ясности)¹ и использовать snmp\(mib\)\{0,1\}d. Поскольку шаблон содержит косую черту, используйте другой символ в качестве разделителя, например !. Поскольку sedявляется фильтром, вам нужно будет записать вывод в новый файл, а затем переместить новый файл на место (перенаправление вывода в sedтот же файл, что и ввод, не сработает: сначала будет стерт старый файл, а затем начнется чтение из теперь пустого файла)².

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 нет операторов \?или \|, только запущен BRE, поэтому \(snmpmibd\|snmpd\)не будет работать.
² В AIX sed нет -i, это расширение GNU.

решение2

Спасибо Жилю за замечание о том, что AIX sed не разрешает -i

комментировать строки

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 

Если вы не являетесь пользователем root, вам могут потребоваться дополнительные права для изменения этого файла, поэтому sudoключ — это a.

Я также рекомендую сделать резервную копию /etc/rc.tcpipна всякий случай.

решение3

В /etc/rc.tcpip, закомментируйте snmpdзапись, выполнив команду:

chrctcp -d snmpd

Связанный контент