在日常工作中,经常会遇到服务器与服务器间远程发送执行命令的情况,当然解决的方式有多种,比如用堡垒机免密登录和执行命令,比如CICD中用Jenkins等工具做免密拉取git仓库代码然后打包并推送到生产环境服务器,再比如服务器间做了免密后直接执行命令等等,本文在此基础上做了个总结。。
免密的远程发送执行命令
前提条件:已配置ssh免密码登陆(略)
对于简单的命令:
ssh user@remoteNode "cd /home ; ls"
双引号必须 两个命令之间用分号隔开
多个命令可以写个脚本:
远程执行的内容在“<< eeooff ” 至“ eeooff ”之间, eeooff可以随便修改成其他形式,在结束前,加exit退出远程节点
直接本地执行脚本即可:bash abc.sh
让远程服务器执行本地的脚本
我们在本地创建一个脚本文件test.sh
ssh root@xxx.xxx.xxx.xxx "/usr/bin/bash" < test.sh
本地执行远程服务器上的脚本
我们在远程服务器创建一个脚本文件test.sh
ssh root@xxx.xxx.xxx.xxx "/home/nick/test.sh"
利用ssh的-t参数
提供一个远程服务器的虚拟tty终端
ssh -t -p 22 $user@$ip 'vim aaa.txt'
指定密码的远程发送执行命令
如果服务器之间没有做免密,则用到sshpass命令,把密码传送过去
安装:yum install sshpass -y
示例:远程复制 scp
sshpass -p 'password' scp -P 22 ./main root@127.0.0.1:/goproject/main
示例:远程执行sh脚本
sshpass -p 'password' ssh -p 22 root@172.0.0.1 /goproject/stop.sh
评论 (0)