我想创建一个bash脚本,使用ssh登录我网络中的所有linux服务器并收集' uptime'的输出。命令到本地文件。这些本地服务器和远程服务器之间没有安装密钥对。所以我需要在脚本本身中给出密码(所有远程服务器的用户名和密码都相同)。我知道这不是一种安全的方法,但它只是为了学习目的。我看到'期待'命令可以用于带密码的ssh登录,但是混淆了如何将它与“正常运行时间”一起使用'提供服务器状态的命令。所以我的要求是
1. I have local server test1 which contains a text file 'server_status.txt'
2. I need a script in test1 that will try to login to all the remote servers (say 192.168.0.1 to 192.168.0.50) using the same username and password. It will execute the command 'uptime' once logged in to the remote servers and store the output to the local file 'server_status.txt'
答案 0 :(得分:0)
REVOKE:将您的公钥粘贴到服务器/path2userthatshouldlogon/.ssh/authorized_keys
并使用ssh user@host commandtoexecute
由于想要在没有密钥的情况下建立连接。 更新:如果您确实需要密码,请查看sshpass, NOT RECOMMENDED
答案 1 :(得分:0)
注意:这样做很不好。如果你正在测试这个,那么你正在学习一个坏习惯。不要在你关心的服务器上进行生产。
您希望以expect
身份执行$?
来电,并确保存储$USER
和$SERVER
个变量,或者只是替换它们:
uptime=$(expect -c 'spawn ssh $USER@$SERVER send "uptime"; exit;')
echo $uptime