bash - run - Ejecute ssh e inmediatamente ejecute el comando
ssh password (3)
Esta pregunta ya tiene una respuesta aquí:
Estoy tratando de encontrar el comando UNIX o bash para ejecutar un comando después de conectarme a un servidor ssh. Por ejemplo:
ssh name@ip "tmux list-sessions"
El código anterior funciona, enumera las sesiones, pero luego se desconecta inmediatamente. Ponerlo en el sshrc del lado del servidor funciona, pero necesito poder escribirlo en el lado del cliente. Quiero poder ejecutar un comando, se conecta, abre la ventana y luego ejecuta el comando que he establecido. He intentado
[command] | ssh name@ip
ssh name@ip [command]
ssh name@ip "[command]"
ssh -t name@ip [command]
Esto no es exactamente lo que estás buscando, pero lo he encontrado útil en circunstancias similares.
Recientemente agregué lo siguiente a mi $HOME/.bashrc
(algo similar debería ser posible con shells que no sean bash):
if [ -f $HOME/.add-screen-to-history ] ; then
history -s ''screen -dr''
fi
Mantengo una sesión de screen
ejecutándose en una máquina en particular, y he tenido problemas con las conexiones ssh
a esa máquina que se han descartado, lo que me obliga a volver a ejecutar la screen -dr
cada vez que me vuelva a conectar.
Con esa adición, y después de crear ese archivo (vacío) en mi directorio personal, automáticamente tengo el comando screen -dr
en mi historial cuando se inicia mi shell. Después de volver a conectar, puedo simplemente escribir Control-P Intro y estoy de vuelta en mi sesión de pantalla, o puedo ignorarlo. Es flexible, pero no es completamente automático, y en su caso es más fácil que escribir tmux list-sessions
.
Es posible que desee que el comando history -s
incondicional.
Esto requiere actualizar su $HOME/.bashrc
en cada uno de los sistemas de destino, lo que puede o no hacer que sea inadecuado para sus propósitos.
Puede usar la opción de línea de comando LocalCommand
si la opción PermitLocalCommand
está habilitada:
nombre de usuario ssh @ nombrehost -o LocalCommand = "tmux list-sessions"
Para obtener más detalles sobre las opciones disponibles, consulte la página man ssh_config
.
ssh -t ''command; bash -l''
ejecutará el comando y luego iniciará un shell de inicio de sesión cuando se complete.