¿Cómo puedo ejecutar comandos en modo por lotes a través de ssh? Es decir, ¿cuál es el ssh
equivalente del comando sftp -b <filename> <hostname>
?
Tengo un conjunto de comandos que deseo ejecutar en un conjunto de hosts que se conectan ssh
. De nuevo sftp
, almaceno los comandos en un archivo filename
y me conecto al host y ejecuto los comandos usando el comando mencionado anteriormente.
¿Es posible algo así ssh
?
Respuestas:
Corrígeme si me equivoco, pero parece que quieres ejecutar comandos de shell regulares en el servidor remoto donde el script es local.
Lo hago con algunas aplicaciones '' en ejecución remota de mi entorno de prueba usando Python en lugar de la cáscara:
ssh $userhost python < $pythonscriptfilename
.fuente
El equivalente de SSH
sftp -b <filename> <hostname>
sería:ssh -o BatchMode=yes <hostname> sh -s < "<filename>"
fuente
¿Qué tal mantenerlo simple y ejecutar el archivo "batch" en la otra computadora?
Y el archivo por lotes sería un script de shell normal, por lo que la sintaxis es bien conocida.
fuente
man expect
? : \Pero no es la manera perfecta.
fuente
expect
está diseñado para interactuar con programas que esperan ejecutarse en una terminal. Esto no está relacionado con el problema de ejecutar comandos sobre ssh.quizás
fuente
Podrías usar comandos forzados ssh.
Estos están asociados con una clave particular. Cuando se realiza una autenticación con esa clave, se ejecuta ese comando y se cierra la conexión. Una ventaja de este enfoque es una mayor seguridad, ya que en ese caso la clave no se puede usar para acceder a un shell de inicio de sesión.
fuente
Otra opción para un script de Arcege sería una función Bash:
No uso la
-T
opción ssh , ya que no funciona con ella en todos los casos.Este script utiliza la expansión de parámetros en la matriz de parámetros posicionales
$@
:"${@:(-1)}"
se expande hasta el último parámetro (literalmente primero desde el final hacia adelante)"${#@}"
se expande a la cantidad de parámetros posicionales"${@:1:${#@}-1}"
se expande a una lista de todos los parámetros desde el primero hasta el último (literalmente, el número de parámetros menos uno).fuente