Desidero utilizzare expect
per eseguire un semplice comando cat /tmp/id_rsa.pub
su ssh.uso prevede di generare comando con argomenti contenenti spazi
In un guscio, posso eseguire questo wo problema, (con messo manualmente la password)
ssh [email protected] 'cat /tmp/id_rsa.pub'
voglio automatizzare questo con expect
. Il mio script expect
è,
#!/usr/bin/expect
eval spawn ssh [email protected] 'cat /tmp/id_rsa.pub'
expect "password:"
send "123456"
expect eof
Getta errore bash: cat /tmp/id_rsa.pub: no such file or directory
. mi sembra molto strano Quale potrebbe essere la possibile causa?
Modifica: dopo alcuni test, ho trovato questo è comune, non solo nel caso di cat
. Se il comando argomento di spawn è con spazio (anche se è tra virgolette), avrà un problema. Ad esempio, sostituendo cat /tmp/id_rsa.pub
con altri comandi con spazi, come
eval spawn ssh [email protected] 'which java'
si lamenta con bash: which java: command not found
. Ma in caso di sostituzione che, con pwd
, come
eval spawn ssh [email protected] 'pwd'
funzionare bene.
Hai provato a rimuovere le virgolette singole attorno a 'argomento di comando'? Sembra che la radice del problema è che sta cercando di interpretare l'intera stringa citato come il nome di un comando, invece di dividere in comando e gli argomenti ... – twalberg
@twalberg che sta lavorando. Ho anche provato le doppie virgolette, wo/problem pure. Solo per curiosità, puoi spiegare un po 'cosa c'è di speciale nelle virgolette singole? – Richard
Devo scavare i documenti 'expect' per vedere cosa dice - non so in cima alla mia testa. L'ho suggerito sulla base della sintassi del particolare messaggio di errore che stavi ricevendo ... – twalberg