• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > shell脚本实现同时多台远程主机执行命令的代码分享

shell脚本实现同时多台远程主机执行命令的代码分享

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了执行shell脚本命令,shell脚本命令,shell脚本常用命令,shell脚本命令大全,shell脚本基本命令等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

实现需求

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

实现方法

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

ssh-copy-id [-i [identity_file]] [user@]machine
</div>

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 '-------------------------'
</div>

示例

$ 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 
-------------------------
</div>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

</div>

您可能想查找下面的文章:

  • shell脚本实现同时多台远程主机执行命令的代码分享
  • 执行Shell脚本的4种方法及区别介绍
  • 执行Shell脚本的4种方法及区别介绍
  • Shell脚本中使用for循环和cat命令实现按顺序合并文件
  • Shell脚本中实现切换用户并执行命令操作
  • Shell脚本中执行sql语句操作mysql的5种方法
  • Shell脚本test命令使用总结和实例
  • Shell 命令执行顺序分析[图]

相关文章

  • linux下防火墙开启某个端口号及防火墙常用命令使用(详解)
  • linux文件目录默认权限(详解)
  • Linux Shell中判断进程是否存在的代码
  • Shell脚本编写Nagios插件监控程序资源占用
  • linux shell实现转换输入日期的格式
  • Linux下JDK中文字体乱码的解决方法
  • Shell 函数参数
  • rsync结合find技巧分享
  • Shell脚本把文件从GBK转为UTF-8编码
  • linux bash中too many arguments问题的解决方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 在 Shell 提示符中显示 Git 分支名称的方法
    • 一天一个shell命令 linux好管家-进程-ps命令详解
    • Shell脚本中的特殊字符(美元符、反斜杠、引号等)作用介绍
    • Shell脚本实现防止国外ip访问服务器
    • Shell脚本批量修改文件后缀名代码分享
    • nginx多server日志分割脚本分享
    • Shell脚本实现批量下载网络图片代码分享
    • crontab每10秒执行一次的实现方法
    • unix编程创建前缀固定的临时文件代码分享
    • Linux命令每天必学(55)之traceroute命令

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有