2009-06-25 21 views

Respuesta

40

Backticks ejecutará el comando en el shell local y colocará los resultados en la línea de comando. Lo que estás diciendo es 'execute ./test/foo.sh y luego pasa el resultado como si lo hubiera escrito en la línea de comando aquí'.

Pruebe el siguiente comando y asegúrese de que esa sea la ruta desde su directorio de inicio en la computadora remota a su secuencia de comandos.

ssh [email protected] './test/foo.sh' 

Además, el script debe estar en la computadora remota. Lo que esto hace es, básicamente, iniciar sesión en la computadora remota con el comando enumerado como su caparazón. No se puede ejecutar un script local en una computadora remota como esta (a menos que haya algún truco divertido que no sé).

+12

Este es el truco divertido, tomado de http://wpkg.org/Executing_local_programs_and_scripts_remotely: cat/usr/bin/program | ssh user @ server "cat>/tmp/program; chmod 755/tmp/program;/tmp/program --arguments" –

+1

Sí, pensé que algo así era posible, pero en realidad no está ejecutando un programa local, solo estoy copiando de una manera innecesariamente compleja. Si va a hacer eso, puede hacer scp /path/to/script.sh usuario @ servidor: && ssh usuario @ servidor ./script.sh Supongo que tiene que escribir una contraseña dos veces de esta manera , entonces eh. – psanf

+0

@MarkRushakoff, gracias por eso. ¡Exactamente lo que necesitaba! – Dan

121

Lo que puedes hacer es.

ssh [email protected] 'bash -s' < /path/script.sh 
+1

Gracias - para mí en MediaTemple, separando la cadena de esta manera, incluyendo el argumento 'bash-s' era lo que necesitaba. ¡Gracias! – itsricky

+2

Recién vinculando cómo hacer esto en Perl como referencia: http://stackoverflow.com/questions/18236988/execute-perl-script-on-remote-server-from-local-machine – arun

+2

¡Gran solución! mira esta misma solución a través del módulo 'ssh2' para el nodo: https: //gist.github.com/mscdex/7c9f8358b8331ea567b7 – knownasilya

0

Haga el script ejecutable por el usuario "Kev" y luego retire el probarlo que atraviesa el comando sh [email protected] /test/foo.sh

0

yo era capaz de invocar un script de shell con este comando:

ssh ${serverhost} "./sh/checkScript.ksh" 

por supuesto checkScript.ksh debe existir en el directorio $HOME/sh.

0

Si desea ejecutar un script local de manera remota sin guardar esa secuencia de comandos de forma remota que puede hacerlo de esta manera:

cat local_script.sh | ssh [email protected] 'bash -' 

funciona como un encanto para mí.

Lo hago incluso desde Windows a Linux dado que tiene MSys instalado en su computadora con Windows.

Cuestiones relacionadas