新手系统pipe理员 – Bash脚本协助

我是一个正在学习angular色的新系统pipe理员。 我在这里有一个bash脚本,我无法工作。 这只是一个testing脚本作为我的第一个,所以我知道设置authorized_keys到777是不明智的,但我只是做它来检查我的脚本是否现在工作。

我正在使用LDAP的密码,所以用SSH密钥远程设备是不理想的,所以我使用SSH通行证。

此代码工作到useradd,然后它不mkdir .ssh,不触摸/创buildauthorized_keys,并不会更改文件的权限。

为什么?

#!/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脚本正确的东西,但所有这些命令需要在远程机器上运行。

在你需要的每一个命令之前,移除'udo -i'行,并且只放“uudo”。

例:

 sudo mkdir /home/test1/.ssh; cd /home/test1/.ssh; sudo touch authorized_keys; sudo chmod 777 authorized_keys' 

如果你想“pipe理多个服务器”,Bash脚本是错误的方法,因为你自己承认你是新手,学习像Puppet这样的CMS,用一个真正的configurationpipe理系统来pipe理你的服务器。 想一想你的系统pipe理方法,不要问自己:“我该如何解决这个小问题/任务,我怎么能从一个地方pipe理我的所有服务器,并确保我所有的服务器都有一致的configuration。

想一想在这种情况下,可以说你得到这个脚本的工作,然后你决定要删除“testing1”的帐户,现在你需要写另一个脚本。 而在CMS中,您可以添加以下用户:

   @user {“test1”:
    确保=>现在,
     #password =>'hashed_value'
    评论=>“testing用户”,
    组=>“轮”,
     managehome => true,
   }

然后,如果您稍后决定删除用户,请将configuration更改为:

  @user {“test1”:
    确保=>缺席,
   } 

在所有需要和已经完成的服务器上打电话或“实现”这个资源,额外喝一杯咖啡,然后轻拍自己,减less95%的时间。 将所有configuration保存在Subversion或其他版本控制系统中,并logging你为什么改变它,谁要求你做什么和什么时候做。 所以,当你的老板问,为什么你删除了所有服务器上的test1账户,你可以看看你的账单,然后说,因为你在3/15的时候要求我发邮件。 工作聪明,不难。

祝你好运。