温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

shell脚本如何实现同时多台远程主机执行命令

发布时间:2021-06-25 11:40:15 来源:亿速云 阅读:867 作者:小新 栏目:开发技术

这篇文章主要介绍shell脚本如何实现同时多台远程主机执行命令,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

实现需求

在对单台机器做操作时我们会用“ssh ip”的方式登录到机器上,可以写这样一个工具vssh ip1,ip2,…ipn 来模拟登录到n 台服务器,登录后所有操作相当于同时对n 台服务器生效。

实现方法

首页要确保可以通过本地公钥无密码登录远程主机:

ssh-copy-id [-i [identity_file]] [user@]machine

shell脚本

#!/bin/bash # ------------------------------------------------------------------------------- # Author:   Loya.Chen # Description: Execute commands on multiple remote hosts at the same time. # ------------------------------------------------------------------------------- set -e Usage() {   echo "Usage: $0 host1 host2 ... 'command'" } if [ $# -lt 2 ] ;then   Usage   exit 0 else   cmd=${!#} fi logfile=$(mktemp) i=1 success=0 failed=0 for ip in $@;do    if [ $i -eq $# ];then     break   fi   ssh $ip $cmd &> $logfile   if [ $? -eq 0 ];then     #((success++))     success=$(($success+1))     echo -e "\n\033[32m$ip | success \033[0m \n"     cat $logfile   else     ((failed++))     echo -e "\n\033[31m$ip | failed \033[0m\n "     cat $logfile   fi   ((i++)) done echo -e '\n-------------------------' echo -e "\033[32msuccess: $success | failed: $failed \033[0m" echo '-------------------------'

示例

$ bash vssh 10.0.0.11 10.0.0.12 'free -m' 10.0.0.11 | success         total    used    free   shared  buffers   cached Mem:     2871    156    2715     0     8     36 -/+ buffers/cache:    111    2760 Swap:     2047     0    2047 10.0.0.12 | success         total    used    free   shared  buffers   cached Mem:      980    615    365     0     12     69 -/+ buffers/cache:    533    447 Swap:     2047     0    2047 ------------------------- success: 2 | failed: 0  -------------------------

以上是“shell脚本如何实现同时多台远程主机执行命令”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI