usar servidor protocolo ejemplo como comandos comando shell ssh

shell - servidor - ¿Puedo enviar ssh a algún lado, ejecutar algunos comandos y luego dejarme un aviso?



sftp linux ejemplo (5)

Me parece necesario iniciar sesión en varios servidores, establecer variables de entorno y luego trabajar de forma interactiva.

p.ej

$ ssh anvil jla@anvil$ export V=hello jla@anvil$ export W=world jla@anvil$ echo $V $W hello world

¿Cómo puedo combinar los primeros comandos y luego dejarme en un aviso?

Algo como:

$ ssh anvil --on-login ''export V=hello; export W=world;'' jla@anvil$ echo $V $W hello world

Obviamente, este es un problema modelo. Lo que realmente estoy preguntando es ''¿cómo hago ssh en una máquina diferente, ejecuto algunos comandos y luego continúo como si los hubiera manejado a mano?''


Otro enfoque es ejecutar esta bestia (también me da un caparazón de color):

ssh host -t "echo ''rm /tmp/initfile; source ~/.bashrc; cd foo/; git status'' > /tmp/initfile; bash --init-file /tmp/initfile"


Probablemente lo más simple es:

$ ssh -t host ''cmd1; cmd2; sh -i''

Si quieres establecer variables, hazlo:

$ ssh -t host ''cmd1; cmd2; FOO=hello sh -i''

Tenga en cuenta que este es un hack terrible, y sería mejor que ponga los comandos iniciales deseados en un script y haga:

$ scp setup host:~ $ ssh host host$ . setup



También podría usar el siguiente script de expect :

#!/usr/bin/expect -f spawn ssh $argv send "export V=hello/n" send "export W=world/n" send "echo /$V /$W/n" interact


Vale la pena señalar que ssh -t realidad se puede utilizar para conectarse a un host a través de otro host.

Por ejemplo, si desea ejecutar un comando en el yunque , pero solo se puede acceder al yunque desde la puerta de enlace del host (mediante un cortafuegos, etc.), puede hacer esto:

ssh gateway -t ''ssh anvil -t "export V=hello; export W=world;bash -l";''

Salir del yunque también lo desconectará de la puerta de enlace (si desea permanecer en el gatway después de salir del yunque, simplemente agregue otro bash -l antes de cerrar el comando.