当前位置:   article > 正文

cmd指令大全指令_Linux同时操作多台主机小技巧(可替代ansible):run_cmd

runcmd

1c05e7fe3bb33cccb49d2684ffb998af.png

在Linux服务器集群以及docker集群或者k8s中,我们通常会在一台主机执行主要操作,有时候需要登录到其他主机执行,就会显得比较麻烦,Ansible就是这么一个在单台服务器操作多台的工具,但是ansible不但需要安装ansible脚本及依赖包,还有比较复杂的指令格式,其实ansible大部分操作可以用以下比较简单的脚本run_cmd来实现:

run_cmd xxxx(你想要在所有主机上执行的指令)

1.在需要执行run_cmd主机使用publickey免密登录所有主机(包括该主机自己),参考之前笔记或者百度,

一只通信旺:零基础docker学习笔记4:免密便捷登录docker​zhuanlan.zhihu.com
0451024341d5a23ec6bb991791359f5d.png

2. 在该主机新建一个hostlist文件来记录所有需要执行指令的主机ip

  1. [root@master work]# pwd
  2. /opt/k8s/work
  3. [root@master work]# cat hostlist
  4. 192.168.63.120
  5. 192.168.63.121
  6. 192.168.63.122

3. 新建run_cmd脚本如下

  1. [root@master work]# cat run_cmd
  2. #!/bin/bash
  3. run_cmd ()
  4. {
  5. local hostlist=`cat /opt/k8s/work/hostlist | awk '{ print $1 }'`;
  6. for host in $hostlist;
  7. do
  8. echo "=============="$host"=============="
  9. ssh -o StrictHostKeyChecking=no -o ConnectTimeout=2 "$host" $@ ;
  10. done
  11. }
  12. run_cmd $@

4. 添加执行权限

[root@master work]# chmod +x run_cmd

5. 检查脚本是否正常

  1. [root@master work]# ./run_cmd date
  2. ==============192.168.63.120==============
  3. Sun Aug 25 21:26:49 CST 2019
  4. ==============192.168.63.121==============
  5. Sun Aug 25 21:26:50 CST 2019
  6. ==============192.168.63.122==============
  7. Sun Aug 25 21:26:49 CST 2019
  8. [root@master work]# ./run_cmd ls -l
  9. ==============192.168.63.120==============
  10. total 4
  11. -rw-------. 1 root root 1425 Aug 21 01:50 anaconda-ks.cfg
  12. lrwxrwxrwx 1 root root 14 Aug 25 20:05 work -> /opt/k8s/work/
  13. ==============192.168.63.121==============
  14. total 8
  15. -rw-------. 1 root root 1425 Aug 21 01:50 anaconda-ks.cfg
  16. -rw-r--r--. 1 root root 484 Aug 22 16:22 kubernetes.conf
  17. ==============192.168.63.122==============
  18. total 8
  19. -rw-------. 1 root root 1425 Aug 21 01:50 anaconda-ks.cfg
  20. -rw-r--r--. 1 root root 484 Aug 23 03:40 kubernetes.conf
  21. [root@master work]#

6. 把该run_cmd脚本添加到$PATH任意一个目录下,即可在任意目录执行该指令

  1. [root@master work]# echo $PATH
  2. /opt/k8s/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  3. [root@master work]# cp run_cmd /usr/local/bin
  4. [root@master work]# ls -l /usr/local/bin/run_cmd
  5. -rwxr-xr-x 1 root root 279 Aug 25 21:28 /usr/local/bin/run_cmd
  6. [root@master work]# cd
  7. [root@master ~]# pwd
  8. /root
  9. [root@master ~]# run_cmd date
  10. ==============192.168.63.120==============
  11. Sun Aug 25 21:29:46 CST 2019
  12. ==============192.168.63.121==============
  13. Sun Aug 25 21:29:46 CST 2019
  14. ==============192.168.63.122==============
  15. Sun Aug 25 21:29:46 CST 2019

完成,在此主机上即可对所有主机执行你想执行的指令

喜欢的话用你的小手手点个赞哟^_^

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/418557
推荐阅读
相关标签
  

闽ICP备14008679号