LDAP中的用户帐户创建日期

时间:2013-09-26 06:57:37

标签: bash ldap

我想编写一个shell脚本来执行以下操作,会建议如何制作它?非常感谢

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

       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获取可用于与时间戳进行比较的创建日期字符串。

2 个答案:

答案 0 :(得分:0)

接近这一点应该有效:

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进行测试,因为最近我的家庭系统上没有人创建过。

-Jim

答案 1 :(得分:0)

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