从LDAP添加用户到Linux机箱

时间:2010-05-15 04:48:31

标签: bash scripting

我收到了一个请求,要求将大约100个用户添加到用户已经在ldap中的linux盒子中,这样我就不能只使用新用户并将其指向文本文件。另一个管理员正在处理ldap部分,所以我所要做的就是创建所有主目录,并在将用户添加到框中后将​​它们提交给正确的用户。创建目录不是问题,但我想要一个更优雅的脚本来将它们chown给正确的用户。我目前基本上看起来像什么

  

chown -R testuser1 testgroup1 / home / tetsuser1; chown -R testuser2 testgroup2 / home / testgroup2; chown -R testsuser3 testgroup1 / home / testuser3

基本上我接受了将用户名和组名弹出到excel中的请求,在前面添加了一个“chown -R”列,然后添加了一列“/”,复制并粘贴了后面的用户名列和然后添加了一列“;”并将其拖到倒数第二行。把它放进记事本跑了一些快速找到并替换,在不到一分钟的时间里,我有一个完整的请求和悲伤的空虚感觉。我知道这是一个真正的贫民窟方法,我试图摆脱使用excel避免学习新的脚本技术,所以这是我真正的问题。

tl; dr我创建了100个主目录,并将它们与正确的用户进行了对比,但它很难看。实际问题如下。

你有一个名为idlist的文件,看起来像这样(只有1000个用户和真实用户名和组)

  

testuser1 testgroup1
  testuser2 testgroup2
  testuser3 testgroup1

编写一个脚本,为所有用户创建主目录,并将创建的目录选择为正确的用户和组。为了制作目录,我使用了以下内容(请随意对此进行火焰/纠正。)

  

var ='cut -f1 -d“”idlist'(我在切割命令周围使用了反引号而不是撇号)
  mkdir $ var

3 个答案:

答案 0 :(得分:3)

#!/bin/bash
# should work in any POSIX shell
while read user group
do
    mkdir "/home/$user"
    chown "$user:$group" "/home/$user"
done < idlist

答案 1 :(得分:2)

使用cut并不错;你可以用它来组装整个命令。您也可以使用awk,这可能更容易:

awk '{print "mkdir /home/" $1 "; chown -R " $1 ":" $2 " /home/" $1}' idlist

答案 2 :(得分:1)

awk '{ system("mkdir " $1); system("chown " $1 ":" $2 " " $1); }' idlist

刚刚测试了功能性。当然需要在root权限下运行。这不会组装命令,您可以在反引号或$()下执行。它直接执行它们。

已编辑添加:

如果您经常这样做,您可能希望在脚本文件中设置单行或作为别名。不过,我确实建议你学习awk。这是一个非常好的小语言,实际上保证在任何符合Posix的系统上。 (事实上​​,我认为这是除了sh之外的唯一一个。)