esperar script dando erro

1

na máquina remota existe um script ./bin/show_info.py que eu quero executar e obter a saída na máquina local, para a qual criei um script com expectativa.

Se eu executar o comando abaixo, ele funcionará corretamente, mas quando o mesmo mencionado no script der erro.

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

erro de script

[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)

conteúdo do arquivo

#!/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
    
por Shanker 27.04.2017 / 06:02

1 resposta

1

As aspas duplas são um problema no seu caso no script expect .

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

Basta observar que, devido às aspas duplas terminarem após o endereço IP, o pipe fica exposto.

Você pode tentar isso:

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