我目前正在寻找一种解决方案,用于从包含以下格式的“ 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”的实用程序,但不确定如何满足自己的需要。
我愿意接受任何想法以满足我的需要,任何帮助将不胜感激!
谢谢
答案 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
而不是使用带有您脚本名称的完整路径。而且不要忘记&
在后台发送进程...