Alguém pode me informar como executar sudo
comandos expect
? Eu tentei o seguinte, mas isso não está funcionando. Alguém pode me dar sugestão, por favor?
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 "#"
Quando tentei o script abaixo, ele foi executado sem erros, mas não obtive a saída. Aqui está o script e a saída quando ele é executado. Onde estou cometendo um erro aqui?
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}
"#"
}
Execução
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
à parte superior do script e leia a saída detalhada.Eu gostaria de compartilhar meu acerto. Eu tentei isso no meu sistema. isso está funcionando bem.
fonte
Tente finalizá-lo com o comando "interagir", que deve funcionar.
fonte
Acho que você pode precisar fazer uma barra invertida nas aspas. Caso contrário,
expect
pensa que o comando termina após "awk":fonte