shell脚本实现同时多台远程主机执行命令的代码分享
实现需求
在对单台机器做操作时我们会用“sship”的方式登录到机器上,可以写这样一个工具vsship1,ip2,…ipn来模拟登录到n台服务器,登录后所有操作相当于同时对n台服务器生效。
实现方法
首页要确保可以通过本地公钥无密码登录远程主机:
ssh-copy-id[-i[identity_file]][user@]machine
shell脚本
#!/bin/bash
#-------------------------------------------------------------------------------
#Author:Loya.Chen
#Description:Executecommandsonmultipleremotehostsatthesametime.
#-------------------------------------------------------------------------------
set-e
Usage(){
echo"Usage:$0host1host2...'command'"
}
if[$#-lt2];then
Usage
exit0
else
cmd=${!#}
fi
logfile=$(mktemp)
i=1
success=0
failed=0
foripin$@;do
if[$i-eq$#];then
break
fi
ssh$ip$cmd&>$logfile
if[$?-eq0];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'-------------------------'
示例
$bashvssh10.0.0.1110.0.0.12'free-m' 10.0.0.11|success totalusedfreesharedbufferscached Mem:287115627150836 -/+buffers/cache:1112760 Swap:204702047 10.0.0.12|success totalusedfreesharedbufferscached Mem:98061536501269 -/+buffers/cache:533447 Swap:204702047 ------------------------- success:2|failed:0 -------------------------
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。