Quelqu'un peut-il me faire savoir comment exécuter des sudo
commandes avec expect
? J'ai essayé ce qui suit mais cela ne fonctionne pas. Quelqu'un peut-il me donner une suggestion s'il vous plaît?
set login "sasuke"
set addr "hostname"
set pw "mypasswd"
spawn ssh $login@$addr
expect "$login@$addr\'s password:"
send "$pw\r"
expect "#"
send "output=$(sudo virsh list --all | awk "/running/{print \$2}" | tail -2); sudo virsh dominfo $output"
expect "password:"
send "$pw\r"
expect "#"
Lorsque j'ai essayé le script ci-dessous, il s'est exécuté sans erreur, mais je n'ai pas obtenu la sortie. Voici le script et la sortie lors de son exécution. Où est-ce que je fais une erreur ici?
set login "sasuke"
set addr "hostname"
set pw "mypasswd"
spawn ssh $login@$addr
expect "$login@$addr's password:"
send "$pw\r"
expect "#"
send {output=$(sudo virsh list --all | awk '/running/{print $2}' | tail -2)}
expect {
password: {send "$pw\r"; exp_continue}
"#"
}
send {sudo virsh dominfo "$output"} ;# don't know if you need quotes there
expect {
password: {send "$pw\r"; exp_continue}
"#"
}
Exécution
sasuke@njob:~$ ./hypr.sh
spawn ssh sasuke@hostname
sasuke@hostname's password:
sasuke@hostname:~$ output=$(sudo virsh list --all | awk '/running/{print $2}' | tail -10)sudo virsh dominfo '$output' sasuke@njob:~$
exp_internal 1
en haut du script et lisez la sortie détaillée.Je voudrais partager mon scirpt. J'ai essayé cela sur mon système. cela fonctionne bien.
la source
Essayez de le terminer avec la commande "interact", cela devrait fonctionner.
la source
Je pense que vous devrez peut-être annuler les guillemets dans les guillemets. Sinon,
expect
pense que la commande se termine après "awk":la source