这个问题在这里已有答案:
我目前正在寻找一种解决方案,用于在包含'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”的实用程序但不确定如何根据我的需要应用此实用程序。
我愿意接受任何想法以满足我的需求,非常感谢任何帮助!
谢谢
你有没有想过使用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
使用你的脚本名称的完整路径。并且不要忘记&
用于在后台发送进程...