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