项目场景:
在工作中,经常需要从本地提交节点,远程登录到其他节点上区执行一些shell命令,如果分别ssh到每台远程主机上,再去执行各个命令会很麻烦。如果可以直接在提交节点上,直接ssh到各个远程主机上去执行命令,可以省去依次登录的麻烦。
实现功能:
需要配置ssh免密码登录。可以直接跳过登录密码,直接登录进远程主机,这一点在shell脚本中执行时非常关键。
操作脚本:
新建一个shell脚本内容如下。
set user "holden"
set host "192.168.0.80"
set loginpass "123456"
set cmd_prompt "]#|~]?"
spawn ssh $user@$host
set timeout 30
expect {
-re "Are you sure you want to continue connecting (yes/no)?" {
send "yes\r"
}
-re "password:" {
send "${loginpass}\r"
}
-re "Permission denied, please try again." {
exit
}
}
expect {
-re $cmd_prompt {
send "./robosense_sdk.sh\r"
send "exit \r"
}
}
interact
运行:
文件名字为start.sh,运行;
expect start.sh