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

1

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

# Start up the snmpmibd daemon
start /usr/sbin/snmpmibd "$src_running"

# Start up the Simple Network Management Protocol (SNMP) daemon
start /usr/sbin/snmpd "$src_running"

Como faço para comentar essas linhas usando sed ?

    
por batil 09.05.2014 / 10:32

2 respostas

2

Para comentar linhas que começam com start /usr/sbin/snmpmibd , use o comando s com um padrão usando ^ anchor e # no texto de substituição, além de & , que significa o texto substituído. Você pode combinar as duas linhas separadamente ou perceber que snmpd é snmpmibd com mib omitido (concisão às custas de clareza) ¹ e usa snmp\(mib\)\{0,1\}d . Como o padrão contém uma barra, use outro caractere como o 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 (redirecionando a saída de sed para o mesmo arquivo que a entrada não funcionaria: seria primeiro apague o arquivo antigo e 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, você pode usar ed em vez de sed.

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

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

    
por 10.05.2014 / 13:33
2

Obrigado ao Gilles pelo comentário sobre o AIX sed não permitindo -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 na linha para selecionar poderia ser feito adicionando /yourRegExFilterPattern/ antes do s como:

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 no filtro complexo (não é o caso aqui com um simples start )

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

para remover o comentário das linhas (precisa do filtro diretamente para evitar comentarios reais)

sed '/YourSelectionPattern/ s/^\(^[[:space:]]*\)#//' /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 você não for root, então um sudo é a chave.

Eu também recomendo fazer uma cópia de backup de /etc/rc.tcpip antes, apenas no caso.

    
por 09.05.2014 / 16:04

Tags