免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2845 | 回复: 18
打印 上一主题 下一主题

如何写这个创建帐号的shell,急. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-02 12:02 |只看该作者 |倒序浏览
有一个用户名文本文件(user.txt),要求是把里面的每个用户名列出来,然后按照取第一个名字英文字母加上姓名的格式(比如John Li变成Jli)把用户名取出来, 然后用ldapsearch -x 查询有无该用户名存在,(格式: ldapsearch -x uid=username) (如果存在的话会返回一行“#numentries:1”。 否则没有),  如果不存在的的话用ldapadd (命令格式没关系) 增加该用户。


请教!


user.txt 内容大约如下:

Andy Huang
Jacky Li
Elle Jiao
Joel Wang
Agatha Jiang       
Georgina Yao       
Michaela Chen
Lewis Wang
Rebecca Wu

论坛徽章:
0
2 [报告]
发表于 2010-02-02 12:08 |只看该作者
for u in `awk '{print substr($1,1,1)$2}' user.txt`
do
  [ `ldapsearch -x uid=$u` = "#numentries:1" ] || ldapadd ...
done

论坛徽章:
0
3 [报告]
发表于 2010-02-02 12:29 |只看该作者
感谢! 能简单解释一下吗。感谢啊...........

论坛徽章:
0
4 [报告]
发表于 2010-02-02 12:32 |只看该作者
好像语法没有写完全。

论坛徽章:
0
5 [报告]
发表于 2010-02-02 12:36 |只看该作者
出现:

-bash: [: Too many arguments

论坛徽章:
0
6 [报告]
发表于 2010-02-02 12:43 |只看该作者
这个ldapsearch命令的返回信息问题
改成
[ "`ldapsearch -x uid=$u`" = "#numentries:1" ]

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
7 [报告]
发表于 2010-02-02 12:49 |只看该作者

  1. #!/bin/bash
  2. for u in `awk '{print substr($1,1,1)$2}' user.txt`
  3. do
  4.     ldapsearch -x uid=$u | grep "#numentries:1" || echo Please complete the ldapadd command by yourself
  5. done
复制代码

论坛徽章:
0
8 [报告]
发表于 2010-02-02 14:34 |只看该作者
主管看了说不太行,比如有两个用户名可能是完全一样的,比如Joe Li, 和 Joel Li 用户名都是Jli,如何处理把重复的用户名换成jli01,如果还是重复就jl02,如此类推。谢谢!

论坛徽章:
0
9 [报告]
发表于 2010-02-02 15:10 |只看该作者
回复 8# sbuddy

如果重复有达到3位数的可能,改成%03d
  1. for u in `awk '{v=substr($1,1,1)$2;if (!a[v]++) print v;else printf "%s%02d\n",v,a[v]}' user.txt`
  2. do
  3.   [ "`ldapsearch -x uid=$u`" = "#numentries:1" ] || ldapadd ...
  4. done
复制代码

论坛徽章:
0
10 [报告]
发表于 2010-02-02 15:29 |只看该作者
你们主管逻辑也真奇怪 那如果存在John lee, joy lee在user.txt内 并且已经存在jlee01 , jlee 这2个用户在ldap内 jlee01对应 jump lee , jlee 对应joo lee
你说怎么判断? 第一个是john lee 算john03 那对于jlee 这个 就不存在重复问题 不管是不是 都是jlee 0x 一个一个加上去? 还是 算判断存在 第二个也判断存在? 那明显 他们的名字却不存在于ldap内啊....这个构思本身就有问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP