Ssh

將軟體包大規模部署到不同大陸的多個 Linux 伺服器

  • March 27, 2016

我是新來的,想提出一個關於 Linux 伺服器的大規模遠端配置的有趣問題。

想像一下,您獲得了 100 台伺服器的 IP 地址列表,其中包含全新安裝的 Ubuntu、可通過 Internet 公開訪問、已在 authorized_keys 中的 ssh 密鑰以及每台伺服器的 sudo 密碼。描述您將如何配置這些伺服器並安裝 OpenVPN。

Puppet 沒有安裝在這些新伺服器上,只是啟用了 SSHD。

最簡單的方法是創建一個包含伺服器名稱/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.

<<<是一個稱為here string的 bash(和其他一些 shell)技巧。

引用自:https://unix.stackexchange.com/questions/272450