Expect Script - arquivo de script bash não encontrado [fechado]

0

Meu script de expectativa

#!/usr/bin/expect -f

#I tried replacing sh - with bash -s still no positive results
spawn ssh xxxx@yyyy "sh -" < test.sh
expect "password: "
send "zzzzz\r"
expect "$ "

Este comando funciona bem se executado no terminal

ssh xxxx@yyyy "sh -" < test.sh

Mas se eu o executar via expect script; falha.

Esta é a saída se eu a executar através do script expect. Posso saber onde estou indo errado

bash: test.sh: No such file or directory

P.S: Sim, o arquivo existe e as credenciais estão corretas.

    
por Magesh Kumaar 30.06.2016 / 10:43

1 resposta

2

O problema é que o redirecionamento com < está sendo feito localmente quando você executa o ssh sozinho (pelo shell no qual está digitando), mas está sendo executado na máquina remota quando executa a partir de expect , porque spawn simplesmente copia os argumentos fornecidos, portanto, o < é passado para o remoto como parte do comando ssh. É como se você digitasse 'ssh' 'xxxx@yyyy' "sh -" '<' 'test.sh' no shell, o que da mesma forma não funcionará.

Você precisa adicionar um comando shell intermediário para obter o redirecionamento analisado antes do ssh. Use por exemplo,

spawn sh -c "ssh xxxx@yyyy sh - < test.sh"
    
por 30.06.2016 / 13:45
yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warning – yii\base\ErrorException

PHP Startup: Unable to load dynamic library 'memcached.so' (tried: /usr/lib/php/20190902/memcached.so (/usr/lib/php/20190902/memcached.so: undefined symbol: igbinary_serialize), /usr/lib/php/20190902/memcached.so.so (/usr/lib/php/20190902/memcached.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '884600',
    'url' => 'expect-script-bash-script-file-not-found',
];

$_COOKIE = [
    '_csrf-frontend' => 'cfc3e37bd5715b97fc44acaea63dddc98bf1cf12a1bae8ddb0928bebd382bed6a:2:{i:0;s:14:"_csrf-frontend";i:1;s:32:"Y-OPPFDl7KM7zYTYvlqqdrPReAs4q5zF";}',
    'advanced-frontend' => 'a83002cjqtudbv92g85kdoli24',
];

$_SESSION = [
    '__flash' => [],
];