这个需求主要是我在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,登录远程主机执行多条命令
可能还有小伙伴会问,如果需要ssh登录远程之后执行指定的脚本文件怎么做?
3,登录远程主机执行指定脚本文件
由此来看,英文还是非常重要的。不然遇到问题你都不知道怎么去搜了,不是我埋汰百度,确实国内搬运回答问题现象太严重,点进去一个除了站点不一样 内容都一样 连错别字都一样,如果你是经常和计算机打交道的一定下载个谷歌浏览器,必须可以使用谷歌,可以配置插件或者配置FQ设备。