我有一个users.txt
包含以下内容:
ip1 user1 password1
ip2 user2 password2
....
ipN userN passwordN
我想在每台服务器上创建一个用户。我想在每台服务器上使用此脚本:
user_login="some_user7"
password="blablabla"
sudo adduser $user_login --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo -e "$password\n$password\n" | sudo passwd $user_login
我不明白如何正确连接每台服务器并执行该脚本。
PS 我不想使用 SSH 公钥。我只想使用登录名和密码。
答案1
使用 ssh 在服务器上执行脚本很简单,例如:
cat script.sh | ssh someserver
但是,您可能不想在每台服务器上执行相同的脚本。您需要另一个脚本来读取您的 users.txt,并从该文件为 users.txt 中的每一行创建脚本文件,然后使用新创建的脚本作为输入调用 ssh。您可以使用 sed 替换某些模板文件中的用户和密码。
或者,你可以使用 awk 来完成所有工作:
awk '{system("ssh \""$1 " sudo adduser " $2 " --disable-password ; echo -e \\\""$3"\\n"$3"\\n\\\" | sudo passwd "$2"\"")}' < users.txt