3

我想写一个shell脚本来做以下,请教怎么做?很感谢

  1. 连接 LDAP 服务器(Id:用户,密码:pass)
  2. 检查user_account_create_dateLDAP服务器中的字段,该字段的数据格式为ABC20130922(2013年9月22日)
  3. 在该字段中查找记录以检查最后 8 位数字,

伪代码:

   if the date is within 7 days: # account is created within 7 days
       then do
            ...
       else do
            ...

我有一个连接ldap的脚本如下,并检查用户帐户是否在7天内创建(脚本尚未完成)

timestamp = date --date="-7 days" +%Y%m%d%k%m%SZ

ldapsearch -h 192.168.1.100 -p 389 -D cn=admin,o=services -w pass -x "(&(objectclass=*)(createTimestamp>=$timestamp))"

then 

我现在希望做的是修改上面的脚本,以便createTimestamp得到可以用来与时间戳比较的创建日期字符串。

4

2 回答 2

1

接近这个的东西应该可以工作:

ndays=7
timestamp=`date --date="-$ndays days" +'%Y%m%d'"100000Z"`

ldapsearch -x -LLL -h yourhost.yourdoamin.com -p 389 -b "ou=people,dc=yourdomain,dc=com" -D cn=admin,....,dc=yourdomain,dc=com -w yourpassword "(&(objectclass=inetorgperson)(modifytimestamp>=$timestamp))" modifytimestamp

我使用 modifyTimeStamp 进行测试,因为最近在我的家庭系统上没有创建任何人。

-吉姆

于 2013-09-26T21:48:17.273 回答
0

确保时间戳具有正确的语法(通用时间)。在断言(过滤器)中使用值时,该值必须是属性的语法。此外,objectClass=*不需要过滤器的组件:所有条目都至少有一个objectClass.

于 2013-10-02T18:46:17.840 回答