[Samba] Users list and the date the password will expire

Ole Traupe ole.traupe at tu-berlin.de
Thu Feb 9 11:49:12 UTC 2017


Never mind. However, with your update I get the following error right on 
the first found "user":

./mailtest_rowland.sh: line 27: (""/10000000)-11644473600: syntax error: 
operand expected (error token is """/10000000)-11644473600")

Ole


On 09.02.2017 12:21, Ole Traupe via samba wrote:
> NOBODY updates my scripts! Except whoever wants, of course. ;)
>
> Would you mind going into details regarding you changes?
>
> Ole
>
>
>
> On 09.02.2017 12:02, Rowland Penny via samba wrote:
>> On Thu, 9 Feb 2017 11:26:55 +0100
>> Ole Traupe <ole.traupe at tu-berlin.de> wrote:
>>
>>> But I got the timestamp subtraction constant right from the beginning!
>>
>> Hope you don't mind but I updated your script ;-)
>>
>> #!/bin/bash
>>
>> ### Set system defaults
>>
>> # Get path to sam.ldb
>> LDBDIR=$(samba -b | grep 'PRIVATE_DIR' | awk -F ':' '{print $NF}' | 
>> sed 's/^ *//g')
>> if [ -z "${LDBDIR}" ]; then
>>      echo "This is supposed to be a DC, but cannot obtain the Private 
>> dir."
>>      echo "Cannot Continue...Exiting."
>>      exit 1
>> else
>>      LDBDB="${LDBDIR}/sam.ldb"
>> fi
>>
>> # Get the default naming context of the domain # 
>> DC=samdom,DC=example,DC=com
>> domainDN=$(ldbsearch -H "${LDBDB}" -b "" -s base defaultNamingContext 
>> | grep 'defaultNamingContext' | sed 's|defaultNamingContext: ||')
>> if [ -z "${domainDN}" ]; then
>>      echo "Could not obtain AD rootDSE"
>>      exit 1
>> fi
>>
>> user_list=$(wbinfo -u)
>>
>> for user in $user_list; do
>>      user=$(echo "${user}" | awk -F '\\' '{print $2}')
>>      user_expire_date=$(ldbsearch --url="${LDBDB}" -b "${domainDN}" 
>> -s sub 
>> "(&(objectCategory=person)(objectClass=user)(sAMAccountName=$user))" 
>> msDS-UserPasswordExpiryTimeComputed | grep 
>> "msDS-UserPasswordExpiryTimeComputed: " | sed 
>> "s|msDS-UserPasswordExpiryTimeComputed: ||")
>> UNIXTimeStamp=$((("${user_expire_date}"/10000000)-11644473600))
>>      date_now=$(date +%s)
>>      exp_days=$((("${UNIXTimeStamp}" - "${date_now}") / 3600 / 24))
>>      if [ "${exp_days}" -le "0" ]; then
>>          mail_string=$(ldbsearch --url="${LDBDB}" -b "${domainDN}" -s 
>> sub 
>> "(&(objectCategory=person)(objectClass=user)(sAMAccountName=$user))" 
>> mail | grep mail: | sed "s|mail: ||")
>>          if [ -n "${mail_string}" ]; then
>>              echo "Gotcha: ${user}" | mail -s "WARNING: Your domain 
>> account password has expired!!!" "${mail_string}"
>>          fi
>>      elif [ "${exp_days}" == "90" ] || [ "${exp_days}" == "60" ] || [ 
>> "${exp_days}" == "30" ]; then
>>            mail_string=$(ldbsearch --url="${LDBDB}" -b "${domainDN}" 
>> -s sub 
>> "(&(objectCategory=person)(objectClass=user)(sAMAccountName=$user))" 
>> mail | grep mail: | sed "s|mail: ||")
>>            if [ -n "${mail_string}" ]; then
>>                echo echo "Gotcha: ${user}" | mail -s "WARNING: Your 
>> domain account password will expire in ${exp_days} days!" 
>> "${mail_string}"
>>            fi
>>      fi
>> done
>>
>> exit 0
>>
>
>




More information about the samba mailing list