我可以使用expect在远程SSH主机上执行命令。一切都很好,只要我把自己限制在一行硬编码的command.However上,我想创建一个本地命令的脚本来远程执行。
这个命令可以工作,但只能使用一行命令:
#!/usr/bin/expect
set USER [lindex $argv 0]
set PASSWORD [lindex $argv 1]
set CMD [lindex $argv 2]
set timeout 10
spawn ssh -o StrictHostKeyChecking=no "$USER" "$CMD"
expect {
timeout {
puts "Timeout happened"
exit 8
}
eof {
puts "EOF received"
exit 4
}
-nocase "password:" {
send "$PASSWORD\n"
expect {
"keys" {
exit 200
}
-nocase "password:" {
exit 1
}
}
}
}这个不起作用:
#!/usr/bin/expect
set USER [lindex $argv 0]
set PASSWORD [lindex $argv 1]
set timeout 10
spawn ssh -o StrictHostKeyChecking=no "$USER" < /var/myscript.sh
# This don't work! ^^^^^^^^^^^^^^^^^^^
expect {
timeout {
puts "Timeout happened"
exit 8
}
eof {
puts "EOF received"
exit 4
}
-nocase "password:" {
send "$PASSWORD\n"
expect {
"keys" {
exit 200
}
-nocase "password:" {
exit 1
}
}
}
}发布于 2019-04-16 00:01:14
<是外壳语法,所以你可以这样做:
spawn bash -c "ssh -o StrictHostKeyChecking=no $USER < /var/myscript.sh"https://stackoverflow.com/questions/55692372
复制相似问题