在多个本地服务器上通过输入执行SSH远程cmd exec(sshpass?)

时间:2018-08-31 19:13:47

标签: linux bash shell networking ssh

我目前正在寻找一种解决方案,用于从包含以下格式的“ user:password”输入文件中的多个本地服务器上执行远程命令:

jboss5:manager:192.168.1.101
database1:db01:192.168.20.6
server8:localnet:192.168.31.83
x:z:192.168.1.151
test:mynet:192.168.35.44
.... and others

我希望远程执行一些命令:

cd $HOME; ./start_script.sh; wget 192.168.1.110/monitor.sh; chmod +x monitor.sh; ./monitor.sh

我知道有一个名为“ sshpass”的实用程序,但不确定如何满足自己的需要。

我愿意接受任何想法以满足我的需要,任何帮助将不胜感激!

谢谢

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用ssh键(请检查man ssh-keygen)?您无需输入密码即可连接...

但是,如果不能,请尝试:

for i in $(< your_file); do
  user=$(echo $i | cut -d: -f1)
  pass=$(echo $i | cut -d: -f2)
  ip=$(echo $i | cut -d: -f3)
  sshpass -p $pass ssh $user@$ip bash -c "you commands &"
done

与其使用cd $HOME而不是使用带有您脚本名称的完整路径。而且不要忘记&在后​​台发送进程...