Ejecute comandos usando sudo en un servidor remoto después de iniciar sesión en PuTTY a través de un archivo por lotes

Ejecute comandos usando sudo en un servidor remoto después de iniciar sesión en PuTTY a través de un archivo por lotes

Necesito iniciar sesión en el servidor remoto diariamente y realizar el mismo conjunto de tareas. Estoy usando la plataforma Windows y el servidor remoto es Unix. Utilizo PuTTY para iniciar sesión en un servidor remoto. Para reducir el trabajo manual, necesito automatizar esta tarea.

Probé este código:

start putty.exe -ssh -load session -l username -pw password -m command.txt -t

El command.txtcontiene:

sudo su - user1 
ls 
cd directory

Solo funciona el primer comando command.txty luego PuTTY espera información del usuario.

Necesito que todos los comandos se ejecuten sin la intervención del usuario.

Cosas que importan:

  • No soy usuario root

  • Acceso concedido para cambiar a user1sin contraseña

  • Tengo la restricción de usar solo PuTTY (no se permite la instalación de Plink)

Respuesta1

Debido a que los comandos contenidos en el command.txtson ejecutados porun caparazón maestrouno a uno.

Entonces el shell maestro ejecuta el sudo, espera a que salga, antes de continuar con los otros comandos ( lsy cd). Y sudono sale (al menos no por sí solo).

Mientras desea que lsy cdse ejecute dentroun caparazón infantilejecutado por el su.

Tienes que decirle suque ejecute los comandos.

Esto debería funcionar:

sudo su - -c "ls ; cd directory" user1

o esto

echo "ls; cd directory" | sudo su - user1

Aunque espero que realmente quieras seguir trabajando en el shell. Mientras que lo anterior saldrá una vez que se ejecuten los comandos.

Entonces desea agregar un shell a la lista de comandos:

sudo su - -c "ls ; cd directory ; /bin/bash" user1

o

echo "ls ; cd directory ; /bin/bash" | sudo su - user1

información relacionada