Ssh
將軟體包大規模部署到不同大陸的多個 Linux 伺服器
我是新來的,想提出一個關於 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)技巧。