2012-01-25 6 views
5

Estoy intentando ejecutar un script de forma remota (desde un script bash), pero tengo problemas para que el resultado se redirija localmente, para el análisis. Al ejecutar el script hay ningún problema con:problema para ejecutar el script bash de forma remota, redireccionando el resultado localmente

ssh -n -l "$user" "$host" '/home/user/script.sh $params' 

Sin embargo soy incapaz de capturar la salida de ese guión. He intentado lo siguiente:

results=$(ssh -n -l "$user" "$host" '/home/user/script.sh $params') 
results=`ssh -n -l "$user" "$host" '/home/user/script.sh $params'` 
ssh -n -l "$user" "$host" '/home/user/script.sh $params' | grep "what I'm looking for" 
ssh -n -l "$user" "$host" '/home/user/script.sh $params' > results_file 

¿Alguna idea?

+0

http://stackoverflow.com/questions/12048906/capturing-ssh-output-as-variable-in-bash-script –

Respuesta

4
ssh [email protected] "ls -l" >output 

Incluso puede hacer cosas como:

ssh [email protected] "cat foo.tar" | tar xvf -- 

Para simplificar las cosas, generar un/par de claves privada pub usando ssh-keygen. Copiar la tecla * .pub al host remoto en ~/.ssh/authorized_keys, asegúrese de que está chmod'd 600

A continuación, puede hacer

ssh -i ~/.ssh/usuario @ yourkey host.com ... etc

Y tampoco pedirá una contraseña. (Si su par de claves no tiene contraseña) ...

0

Seguramente está haciendo algo mal. Acabo de probarlo y funciona bien.

[email protected] /tmp $ cat echo.sh 
#!/bin/bash 
echo "Hello WOrld"$1 
[email protected] /tmp $ ssh -n -l shadyabhi 127.0.0.1 '/tmp/echo.sh' foo 
Hello WOrldfoo 
[email protected] /tmp $ ssh -n -l shadyabhi 127.0.0.1 '/tmp/echo.sh' foo > out 
[email protected] /tmp $ cat out 
Hello WOrldfoo 
0

Bueno, con el fin de ssh -n trabajar en absoluto, es necesario tener cosas establecido para que pueda conectarse sin necesidad de una contraseña o frase de contraseña (por lo que necesita una clave privada local, ya sea disponible con ssh- agente, o sin una frase de contraseña, y esa clave pública debe estar en el archivo authorized_keys apropiado en la máquina remota). Pero si ese es el caso, lo que tienes debe funcionar bien (me ha funcionado bien en muchas máquinas).

Otra posibilidad extraña es si su control remoto script.sh intenta escribir en stdin o/dev/tty en lugar de stdout/stderr. En cuyo caso no va a funcionar con ssh -n

+0

_write a stdin_ - quiso decir "leer" ? – sarnold

0

Realizado

ssh -n -l "$user" "$host" '/home/user/script.sh $params' > results_file 

estaba trabajando, como se esperaba. Solo parecía bloquearse cuando se redirigía la salida (y el script tardaría entre 5 y 6 minutos en compilarse) y, por lo tanto, no se mostraba. Gracias a todos.

0

Su secuencia de comandos no obtiene ninguno de los parámetros y, probablemente, tarde demasiado en ejecutarse debido a eso. Además, lo que sale (en stdout) se puede canalizar a un próximo comando o redireccionar a un archivo como cualquier otro comando local. Considere lo siguiente:

$ cat ~/bin/ascript.sh 
echo one:$1 two:$2 three:$3 

$ params="squid whale shark" 
$ ssh localhost 'ascript.sh $params' 
one: two: three: 

$ ssh localhost "ascript.sh $params" 
one:squid two:whale three:shark 
Cuestiones relacionadas