shell 脚本同时对远程多台机器执行命令
脚本1:需要机器之间免密
ssh-copy-id [-i [identity_file]] [user@]machine
#!/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 '-------------------------'
方法2:这种方式可以不用免密,但是需要在执行命令的机器用户名和密码一致
#!/bin/bash
# -------------------------------------------------------------------------------
# Author: JiangTao.Yu
# 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
sshpass -p "mypasswd" ssh -o "StrictHostKeyChecking no" hduser@$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 '-------------------------'
方法3、从文件读取ip、username、passwd
#!/bin/bash
set -e
success=0
failed=0
while read ip username passwd
do
ip=$ip
username=$username
passwd=$passwd
sshpass -p $passwd ssh -n -o "StrictHostKeyChecking no" $username@$ip "free -m"
if [ $? -eq 0 ];then
success=$(($success+1))
echo -e "\n\033[32m$ip | success\033[0m\n"
else
failed=$(($failed+1))
echo -e "\n\033[32m$ip | failed\033[0m\n"
fi done < ip_user_passwd.txt
echo -e '\n-------------------------'
echo -e "\033[32msuccess: $success | failed: $failed \033[0m"
[root@test ~]# cat ip_user_passwd.txt
192.168.0.235 hduser mypasswd
192.168.4.50 root 123456
192.168.4.50 root 123456
借鉴:https://www.jb51.net/article/119541.htm
shell 脚本同时对远程多台机器执行命令的更多相关文章
- Linux centosVMware运行告警系统、分发系统-expect讲解、自动远程登录后,执行命令并退出、expect脚本传递参数、expect脚本同步文件、指定host和要同步的文件、shell项目-分发系统-构建文件分发系统、分发系统-命令批量执行
一运行告警系统 创建一个任务计划crontab -e 每一分钟都执行一次 调试时把主脚本里边log先注释掉 再次执行 没有发现502文件说明执行成功了,每日有错误,本机IP 负载不高 二.分发系统-e ...
- shell脚本命令远程连接ssh并执行命令
环境: redhat 6.5 根据网上提供方法,测试了很多写法都不成功,测试了很久才有了以下脚本. 命令远程连接ssh并执行命令,scp/ftp等远程连接操作同理: #!/usr/bin/expect ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---6
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---5
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---4
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---3
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---2
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---1
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---0
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
随机推荐
- netcore使用EFcore(第一个实例)
说明:搭建netcore 使用efcore入门教程,跟着这个教程,傻瓜都可以成功!O(∩_∩)O哈哈~,咱们开始吧: 首先介绍下环境: vs2017, netcore2.2, EntityFramew ...
- springcloud源码解析(目录)
springcloud是一个基于springboot的一站式企业级分布式应用开发框架.springboot为其提供了创建单一项目的便利性,springcloud组合了现有的.常用的分布式项目的解决方案 ...
- Html CSS transform matrix3d 3D转场特效
Html CSS transform matrix3d 3D转场特效 透视矩阵 2n/(r-l) 0 (r+l)/(r-l) 0 0 2n/(t-b) (t+b)/(t-b) 0 0 0 (n+f)/ ...
- 前端相关UED团队和个人博客整理
平时收集的UED的团队和个人博客一些有关/*********************************这次真的是搬运工,原文转载自蓝色理想********************/ 前端团队推荐 ...
- Qt布局
常用的布局方法 1. 水平布局类 QHBoxLayout 2. 垂直布局类 QVBoxLayout 3. 网格布局类 QGridLayout QHBoxLayout 对象横向排列开 QVBoxLayo ...
- CoAP协议
CoAP(Constrained Application Protocol) CoAP是6LowPAN协议栈中的应用层协议 CoAP是超轻量型协议 CoAP的默认UDP端口号为5683 1. 四种消息 ...
- 2019.9.27,SAP成都研究院数字创新空间团队建设,射箭和游泳
2019年9月27日,秋高气爽,SAP成都研究院数字创新团队全体成员又迎来了一次团队建设活动.这次的主题是:射箭. 在正式活动之前,大家先享用了一顿泰式海鲜火锅: 吃饱喝足之后,我们来到了名为&quo ...
- linux-修改树莓派分辨率
直接在树莓派下编辑 使用命令行来编辑配置文件 sudo nano /boot/config.txt 并在config.txt文件的最后加上以下代码即可 max_usb_current=1 hdmi_g ...
- django内置缓存
由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5 ...
- yum nginx最新版安装
去官方站点获取yum仓库 [root@web01 ~]# cat /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http:// ...