Utilice el comando sudo para el servidor SSH de script

Utilice el comando sudo para el servidor SSH de script

Tengo que seguir los siguientes pasos en varios servidores:

  1. inicia sesión con mi nombre de usuario
  2. escribirsudo su -
  3. escribiramCLI -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/amCLIsin 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 suis sudo -s, aunque sudo su -creo que hace más).

La segunda versión podría funcionar con algunas condiciones: sudono debería solicitar una contraseña y amCLIdeberí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/amCLIo lo que sea.

información relacionada