Ubuntu本地shell脚本ssh到远程服务器并执行命令(expect解释器)

项目场景:

在工作中,经常需要从本地提交节点,远程登录到其他节点上区执行一些shell命令,如果分别ssh到每台远程主机上,再去执行各个命令会很麻烦。如果可以直接在提交节点上,直接ssh到各个远程主机上去执行命令,可以省去依次登录的麻烦。

实现功能:

需要配置ssh免密码登录。可以直接跳过登录密码,直接登录进远程主机,这一点在shell脚本中执行时非常关键。

操作脚本:

新建一个shell脚本内容如下。
#!/bin/expect

#设置变量
set user "holden"
set host "192.168.0.80"
set loginpass "123456"
set cmd_prompt "]#|~]?"

spawn ssh $user@$host
#设置超时时间,单位是秒
set timeout 30
# -re 匹配正则表达式
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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李老板Holden

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值