这个需求主要是我在jenkins中pipeline的代码里,需要使用shell语言执行远程连接并且部署的工作,但是大多数的shell和服务器交互是使用expect解释器 就是之前我写过的那个关于expect有关的文章,问题是jenkins中默认的shell解释器只有bash,不能更改解释器的。所以就很难受,国内的百度基本都是搬运过来的内容,毫无意义,浪费时间,在国外博客浪荡几天之后终于找到了解决方案。

下面我来分享一下,大致意思呢就是执行完ssh 连接远程主机之后需要执行的命令,可以进行如下操作,命令不要照抄,换成你自己的user名和ip地址。

【我在我自己电脑和服务器之间都配置了ssh免密码登录 直接使用ssh IP地址就可以登录了,强烈建议配置ssh,非常方便】

1,登录远程主机执行单条命令

登录完主机之后执行一条命令

1 $ ssh USER@HOST 'COMMAND'

获取远程主机的最新更新时间

1 $ ssh root@192.168.1.1 'uptime'

登录完远程主机就进行重启远程主机

1 $ ssh root@192.168.1.1 'reboot'

那么问题出来了,上面的都是执行一条命令,那如果我需要执行多条命令怎么办呢?之前困扰我最大的问题就是这个,执行多条命令,虽然直接堆叠多条ssh 登录的语句 那些前缀也可以,但是看着就恶心。这样我们就可以使用以下几个方案,原内容如下,我做了备注,这样比较一目了然。

2,登录远程主机执行多条命令

shell远程调用python shell远程登录后执行脚本_重启

 

 可能还有小伙伴会问,如果需要ssh登录远程之后执行指定的脚本文件怎么做?

3,登录远程主机执行指定脚本文件

 

shell远程调用python shell远程登录后执行脚本_shell远程调用python_02

 

 

由此来看,英文还是非常重要的。不然遇到问题你都不知道怎么去搜了,不是我埋汰百度,确实国内搬运回答问题现象太严重,点进去一个除了站点不一样 内容都一样 连错别字都一样,如果你是经常和计算机打交道的一定下载个谷歌浏览器,必须可以使用谷歌,可以配置插件或者配置FQ设备。