我是新来的,想提出一个关于 Linux 服务器大规模远程配置的有趣问题。
想象一下,您获得了 100 台服务器的 IP 地址列表,这些服务器全新安装了 Ubuntu,可通过 Internet 公开访问,authorized_keys 中已有 ssh 密钥,以及每台服务器的 sudo 密码。描述如何配置这些服务器并安装 OpenVPN。
这些新服务器上没有安装 Puppet,只是启用了 SSHD。
答案1
最简单的方法是获得一个包含服务器名称/IP 和sudo
密码的列表:
server1 pass1
server2 pass2
server3 pass3
...
server100 pass100
然后,您可以迭代该文件,将服务器和密码读入变量并使用ssh
在服务器上运行远程命令:
while read server pass; do
ssh "$server" sudo -S apt-get install network-manager-openvpn <<<"$pass"
done < file
选项-S
允许sudo
您从标准输入传递密码:
-S, --stdin
Write the prompt to the standard error and read the password
from the standard input instead of using the terminal device.
The password must be followed by a newline character.
这<<<
是一个 bash(以及其他一些 shell)技巧,称为这里的字符串。