Adakah yang bisa memberi tahu saya cara menjalankan sudo
perintah expect
? Saya mencoba yang berikut tetapi ini tidak berhasil. Adakah yang bisa memberi saya saran?
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 "#"
Ketika saya mencoba skrip di bawah ini, dijalankan tanpa kesalahan, tetapi saya tidak mendapatkan hasilnya. Ini adalah skrip dan output ketika dijalankan. Di mana saya membuat kesalahan di sini?
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}
"#"
}
Eksekusi
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
ke bagian atas skrip dan baca output verbose.Saya ingin membagikan tipuan saya. Saya mencoba ini di sistem saya. ini bekerja dengan baik.
sumber
Cobalah untuk mengakhirinya dengan perintah "berinteraksi" yang seharusnya berfungsi.
sumber
Saya pikir Anda mungkin perlu backslash tanda kutip dalam tanda kutip. Kalau tidak
expect
berpikir perintah berakhir setelah "awk":sumber