我是一名新的系统管理员,我正在学习这个角色。我在这里有一个无法工作的 bash 脚本。这只是一个测试脚本,因为它是我的第一个脚本,所以我知道将 authorized_keys 设置为 777 是不明智的,但我这样做只是为了检查我的脚本现在是否有效。
我正在使用带有密码的 LDAP,因此使用密钥通过 SSH 连接到远程设备并不理想,因此我使用的是 ssh 通行证。
此代码适用于 useradd,然后它不会 mkdir .ssh,不会触摸/创建授权密钥,并且不会更改文件权限。
为什么?
#!/bin/bash -x
username="test"
echo Enter server IP:
read server
sshpass -p randompassword ssh myusername@$server sudo -i 'useradd test1;
echo $username user added, press any key to continue;
read;
sudo -i;
mkdir /home/test1/.ssh;
cd /home/test1/.ssh;
touch authorized_keys;
chmod 777 authorized_keys'
我可能无法正确理解 bash 脚本,但所有这些命令都需要在远程机器上运行。
如果你想“管理多台服务器”,Bash 脚本是错误的方法,因为你自己承认自己是新手,学习像 Puppet 这样的 CMS,用真正的配置管理系统管理你的服务器。考虑一下你的系统管理方法,不要问自己,“我如何解决这个小问题/任务,想想如何从一个地方管理我的所有服务器并确保我对所有服务器进行一致的配置。
在这种情况下考虑一下,假设您让这个脚本工作,然后您决定要删除“test 1”帐户,现在您需要编写另一个脚本。而在 CMS 中,您可以添加用户:
然后,如果您决定稍后删除用户,请将配置更改为:
在您想要并完成的所有服务器上调用或“实现”此资源,多喝杯咖啡,拍拍自己的后背,以减少 95% 的任务时间。将所有配置保存在 Subversion 或其他一些修订控制系统中,并记下您更改此设置的原因、谁要求您更改以及何时更改。所以当你的老板问你为什么要删除所有服务器上的test1帐户时,你可以看看你的笔记说,因为你在3/15的电子邮件中要求我这样做。聪明地工作,而不是努力。
祝你好运。
删除“sudo -i”行并在您需要的每个命令之前只放置“sudo”。
例子: