Linux 如何使用expect运行SSH脚本?
我可以使用expect在远程SSH主机上执行命令。只要我将自己限制为一行硬编码命令,一切都很好。不过,我想创建一个本地命令脚本,以便远程执行 此命令仅适用于单行命令:Linux 如何使用expect运行SSH脚本?,linux,ssh,expect,Linux,Ssh,Expect,我可以使用expect在远程SSH主机上执行命令。只要我将自己限制为一行硬编码命令,一切都很好。不过,我想创建一个本地命令脚本,以便远程执行 此命令仅适用于单行命令: #!/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" "$CM
#!/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
}
}
}
}
#/usr/bin/expect
设置用户[lindex$argv 0]
设置密码[lindex$argv 1]
设置超时10
spawn ssh-o strichostkeychecking=no“$USER”我自己用sh
应该比bash快几毫秒。我自己用sh
应该比bash快几毫秒。
spawn bash -c "ssh -o StrictHostKeyChecking=no $USER < /var/myscript.sh"