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
Resulta que esto es respondido por esta pregunta:
¿Cómo puedo ssh directamente a un directorio en particular?
a ssh:
ssh -t anvil "export V=hello; export W=world; bash"
seguido por:
jla@anvil$ echo $V $W
hello world
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.