从输入(sshpass?)在多个本地服务器上执行SSH远程cmd exec [重复]

问题描述 投票:0回答:1

我目前正在寻找一种解决方案,用于在包含'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”的实用程序但不确定如何根据我的需要应用此实用程序。

我愿意接受任何想法以满足我的需求,非常感谢任何帮助!

谢谢

linux bash shell networking ssh
1个回答
0
投票

你有没有想过使用ssh-keys(检查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使用你的脚本名称的完整路径。并且不要忘记&用于在后台发送进程...

© www.soinside.com 2019 - 2024. All rights reserved.