esperar script dando error

esperar script dando error

en la máquina remota hay un script ./bin/show_info.pyque quiero ejecutar y obtener el resultado en la máquina local, para el cual he creado un script con expect.

Si ejecuto el siguiente comando, funciona correctamente, pero cuando se menciona lo mismo en el script, aparece un error.

ssh IPaddress "./bin/show_info.py |  grep  total -A2 | grep -v ^+ | grep -v ^-  | sed 's/total.*//g'" > Report_2017.txt

error de guión

[root@centseven ~]# ./directconnect
spawn echo -e > Report_2017.txt
extra characters after close-quote
    while executing
"spawn sh -c "ssh IPaddress "./bin/show_info.py | grep total -A2 | grep -v ^+ | grep -v ^- | sed 's/total.*//g'" > Report_2017.tx..."
    (file "./directconnect" line 6)

contenido del archivo

#!/usr/bin/env expect
set timeout 5

spawn echo -e > Report_2017.txt

spawn sh -c "ssh IPaddress "./bin/show_info.py | grep total -A2 | grep -v ^+ | grep -v ^- | sed 's/total.*//g'" > Report_2017.txt"
expect "Enter passphrase for key '/root/.ssh/id_rsa':"
send "12345\r"
expect "Enter passphrase for key '/root/.ssh/id_rsa':"
send "12345\r"
expect "Enter passphrase for key '/root/.ssh/id_rsa':"
send "12345\r"
expect "Password:"
send "54321\r"
interact

Respuesta1

Las comillas dobles son un problema en tu caso en el expectscript.

spawn sh -c "ssh IPaddress "./bin/show_info.py |.. sed 's/total.*//g'" > Report_2017.txt"

Simplemente observe que debido a las comillas dobles que terminan después de la dirección IP, la tubería queda expuesta.

Quizás quieras probar esto:

spawn sh -c "ssh IPaddress \"./bin/show_info.py |.. sed 's/total.*//g'\" > Report_2017.txt"

información relacionada