*请不要堆积并告诉我只使用 SSH 密钥。如果它让你觉得这就是我正在做的事情,请假装我正在尝试远程登录。:-) *
我正在使用期望脚本通过 ssh 在我控制的一组服务器上运行一些常规命令。该脚本应该在每台机器上运行一组命令(例如 svn update ~/folderx\r")。我当前的脚本会执行我想要它做的所有事情......有时。其他时候它会在完成之前退出 ssh 连接最后几个命令。
关于如何使连接保持直到所有命令完成的任何想法?下面的代码成功登录,成功运行前两个命令左右(ap-get update 和其中一个 svn 更新),然后断开连接。
#!/usr/bin/expect -f
spawn ssh username@ipaddress
set timeout -1
expect "Are you sure you want to continue connecting" {send "yes\r"; exp_continue} "password:" {send "*******\r"; exp_continue
} "username@machine" {send "sudo apt-get update\r"}
expect "password" {send "*******\r"; exp_continue} "username@machine" {send "sudo svn update ~/folder1\r"}
expect "password" {send "*******\r"; exp_continue} "username@machine" {send "sudo svn update ~/folder2\r"}
expect "password" {send "*******\r"; exp_continue} "username@machine" {send "sudo svn update ~/folder3\r"}
expect "password" {send "*******\r"; exp_continue} "username@machine" {send "sudo reboot\r"}
close