Como posso comentar snmpmibd e snmpd em rc.tcpip no AIX usando sed?

Como posso comentar snmpmibd e snmpd em rc.tcpip no AIX usando sed?

Preciso comentar uma entrada no arquivo rc.tcpip dentro de /etc

# Inicie o daemon snmpmibd
start /usr/sbin/snmpmibd "$src_running"

# Inicie o daemon do Simple Network Management Protocol (SNMP)
start /usr/sbin/snmpd "$src_running"

Como faço para comentar essas linhas usando sed?

Responder1

Para comentar linhas que começam com start /usr/sbin/snmpmibd, use o scomando com um padrão usando a ^âncora e #no texto de substituição, mais &o que representa o texto substituído. Você pode combinar as duas linhas separadamente ou observar que snmpdestá snmpmibdomitida mib(concisão em detrimento da clareza)¹ e usar snmp\(mib\)\{0,1\}d. Como o padrão contém uma barra, use outro caractere como delimitador, como !. Como sedé um filtro, você precisará gravar a saída em um novo arquivo e, em seguida, mover o novo arquivo para o lugar (redirecionar a saída sedpara o mesmo arquivo da entrada não funcionaria: primeiro apagaria o arquivo antigo, então comece a ler a partir do arquivo agora vazio)².

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

Para editar um arquivo no local, você pode usarEdem vez de sed.

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

¹ AIX não possui \?operadores \|, apenas iniciou o BRE, então \(snmpmibd\|snmpd\)não funcionará.
² AIX sed não possui -i, é uma extensão GNU.

Responder2

Obrigado a Gilles pela observação sobre o AIX sed não permitir -i

para comentar linhas

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

um filtro on-line para selecionar pode ser feito adicionando /yourRegExFilterPattern/antes do sseguinte:

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

ou, mais eficiente, mas menos legível em filtros complexos (não é o caso aqui com um filtro simples start)

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

para descomentar linhas (é necessário o padrão de filtro direto para evitar descomentar comentários reais)

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

Você pode precisar de direitos extras para modificar este arquivo se não for root, então a sudoé a chave.

Eu também recomendo fazer uma cópia de backup de /etc/rc.tcpipantes, para garantir.

Responder3

Em /etc/rc.tcpip, comente a snmpdentrada executando o comando:

chrctcp -d snmpd

informação relacionada