
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.txt
contiene:
sudo su - user1
ls
cd directory
Solo funciona el primer comando command.txt
y 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
user1
sin contraseñaTengo 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.txt
son 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 ( ls
y cd
). Y sudo
no sale (al menos no por sí solo).
Mientras desea que ls
y cd
se ejecute dentroun caparazón infantilejecutado por el su
.
Tienes que decirle su
que 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