Kann mir jemand mitteilen, wie sudo
Befehle ausgeführt werden sollen expect
? Ich habe Folgendes versucht, aber das funktioniert nicht. Kann mir bitte jemand einen Vorschlag machen?
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 "#"
Als ich das folgende Skript ausprobiert habe, wurde es fehlerfrei ausgeführt, aber ich habe die Ausgabe nicht erhalten. Hier ist das Skript und die Ausgabe, wenn es ausgeführt wird. Wo mache ich hier einen Fehler?
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}
"#"
}
Ausführung
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
oben im Skript hinzu und lesen Sie die ausführliche Ausgabe.Ich möchte meinen Scirpt teilen. Ich habe das auf meinem System versucht. das funktioniert gut.
quelle
Versuchen Sie, es mit dem Befehl "Interact" zu beenden, damit es funktioniert.
quelle
Ich denke, Sie müssen möglicherweise die Anführungszeichen innerhalb der Anführungszeichen zurücksetzen. Andernfalls wird
expect
der Befehl nach "awk" beendet:quelle