¿Cómo puedo comentar snmpmibd y snmpd en rc.tcpip en AIX usando sed?

¿Cómo puedo comentar snmpmibd y snmpd en rc.tcpip en AIX usando sed?

Necesito comentar una entrada en el archivo rc.tcpip dentro de /etc

# Inicie el demonio snmpmibd
start /usr/sbin/snmpmibd "$src_running"

# Inicie el demonio del Protocolo simple de administración de red (SNMP)
start /usr/sbin/snmpd "$src_running"

¿Cómo comento estas líneas usando sed?

Respuesta1

Para comentar líneas que comienzan con start /usr/sbin/snmpmibd, use el scomando con un patrón usando el ^ancla y #en el texto de reemplazo, más &lo que representa el texto reemplazado. Puede hacer coincidir las dos líneas por separado o notar que snmpdestán snmpmibdomitidas mib(concisión a expensas de la claridad)¹ y usar snmp\(mib\)\{0,1\}d. Dado que el patrón contiene una barra diagonal, utilice otro carácter como delimitador, como por ejemplo !. Dado que sedes un filtro, deberá escribir la salida en un archivo nuevo y luego mover el nuevo archivo a su lugar (redireccionar la salida sedal mismo archivo que la entrada no funcionaría: primero borraría el archivo antiguo, luego comience a leer desde el archivo ahora vacío)².

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 un archivo en su lugar, puede usareden lugar de sed.

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

¹ AIX no tiene \?operadores \|, solo inició BRE, por lo que \(snmpmibd\|snmpd\)no funcionará.
² AIX sed no tiene -i, esa es una extensión GNU.

Respuesta2

Gracias a Gilles por el comentario sobre AIX sed que no permite -i

para comentar líneas

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

Se podría hacer un filtro en línea para seleccionar agregando /yourRegExFilterPattern/antes de lo ssiguiente:

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

o más eficiente pero menos legible en un filtro complejo (no es el caso aquí con un filtro simple start)

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

para descomentar líneas (necesita el patrón de filtro directamente para evitar descomentar comentarios reales)

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

Es posible que necesite derechos adicionales para modificar este archivo si no es root, por lo que a sudoes la clave.

También recomiendo hacer una copia de seguridad de /etc/rc.tcpipantes por si acaso.

Respuesta3

En /etc/rc.tcpip, comente la snmpdentrada ejecutando el comando:

chrctcp -d snmpd

información relacionada