在shell中远程ssh服务器,执行服务器上的脚本

在shell中远程ssh服务器,执行服务器上的脚本

背景:在shell脚本A里执行pssh,执行该脚本A,该脚本A的进程会一直卡死

原因:pssh是一个批量linux终端执行命令的工具,它执行完毕后会需要占用终端的输入输出打印执行结果,而脚本A本身就是一个进程,它执行pssh也需要占用终端的输入输出打印pssh的执行结果,那么就产生了死锁问题,导致脚本A的进程一直卡死

解决方法1:nohup的使用

使用nohup将pssh挂到后台执行,即形成一个子进程,使得脚本A和pssh不会同时抢占输入输出。(allip是内容为需要远程访问的服务器ip的文件)

#脚本作用:去到每台服务器上打印“你的大爸爸”
#!/bin/bash
echo "我来了哦"
nohup  pssh -h allip -i "echo '你的大爸爸'" > pssh.txt
cat pssh.txt

#执行结果将重定向到pssh.txt文件中,但为了能够即时显示出来,所以添加了cat pssh.txt
#"echo '你的大爸爸'"也可以替换为其他命令,只是执行后的返回信息还是会打印到pssh.txt中
#执行结果:
[root@24-78 ~]# ./pssh_shell.sh 
我来了哦
nohup: ignoring input and redirecting stderr to stdout
[1] 14:22:24 [SUCCESS] 10.10.24.81
你的大爸爸
[2] 14:22:24 [SUCCESS] 10.10.24.80
你的大爸爸
[3] 14:22:24 [SUCCESS] 10.10.24.84
你的大爸爸
[4] 14:22:24 [SUCCESS] 10.10.24.82
你的大爸爸
[5] 14:22:24 [SUCCESS] 10.10.24.83
你的大爸爸
[6] 14:22:25 [SUCCESS] 10.10.24.78
你的大爸爸
[7] 14:22:25 [SUCCESS] 10.10.24.79
你的大爸爸
[root@24-78 ~]# 

解决方法2:输出重定向

远程执行的内容在“<< EOF ” 至“EOF”之间,在远程机器上的操作就位于其中,注意的点:

  1. << EOF,ssh后直到遇到EOF这样的内容结束,EOF可以随便修改成其他字符。
  2. 重定向目的在于不显示远程的输出了,这样也同样不抢占输入输出
  3. 在结束前,加exit退出远程节点
#脚本作用:去到每台服务器,执行服务器上家目录下的test.sh脚本
#!/bin/bash
IPW=$1
for i in $(cat $IPW)
do
  echo "${i}开始冲啊";
  ssh root@${i} > /dev/null 2>&1 << EOF
  ./test.sh
  exit
EOF
echo done! 
done
#执行结果
[root@24-78 ~]# ./open_test.sh allip 
10.10.24.78开始冲啊
done!
10.10.24.79开始冲啊
done!
10.10.24.80开始冲啊
done!
10.10.24.81开始冲啊
done!
10.10.24.82开始冲啊
done!
10.10.24.83开始冲啊
done!
10.10.24.84开始冲啊
done!
[root@24-78 ~]# 
#检验是否执行
#去到24.79的服务器上查看,24.79服务器上的test.sh脚本的作用是生成以当前时间命名的文件夹;
#结果如下
[root@24-79 ~]# ls
2021-09-16_1309  2021-09-16_1409  anaconda-ks.cfg  change_hostname.sh  test.sh

参考资料:
https://blog.csdn.net/w_y_x_y/article/details/109774463
https://blog.csdn.net/xiaoxiaonvwu/article/details/70742115

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值