Tengo que seguir los siguientes pasos en varios servidores:
- inicia sesión con mi nombre de usuario
- escribir
sudo su -
- escribir
amCLI -l 32/1 | grep Firmware
Entonces me gustaría escribir todo esto en un solo guión, mi idea era:
#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname "sudo su-; amCLI -l 32/1 | grep Firmware"
done
o
#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname "sudo amCLI -l 32/1 | grep Firmware"
done
Aunque ambos no funcionan.
Respuesta1
Una mejor solución es configurar sudo para que su usuario pueda ejecutar /full/path/to/amCLI
sin proporcionar una contraseña.
Entonces puedes simplemente
#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname sudo /full/path/to/amCLI -l 32/1 | grep Firmware
done
Respuesta2
Tal vez si pone vneudeck@$hostname entre comillas dobles, sea útil. Y no hay espacio entre su y - Espero que sea útil.
Respuesta3
El primero no funcionará:
sudo su -; amCLI -l 32/1 | grep Firmware
Esto se ejecutaría sudo su -
, y cuando regresara (es decir, cuando terminara de procesar los comandos como root y saliera), ejecutaría amCLI. (Tenga en cuenta también que es una alternativa a sudo su
is sudo -s
, aunque sudo su -
creo que hace más).
La segunda versión podría funcionar con algunas condiciones: sudo
no debería solicitar una contraseña y amCLI
debería estar en la RUTA (no en la ruta de root, que probablemente se establece cuando escribe sudo su -
, sino en su ruta, porque sudo usa su ruta). Intente especificar la ruta completa a amCLI
, como /usr/local/sbin/amCLI
o lo que sea.