我有一个 bash 脚本,用于从 AD 获取密码创建以来的天数。我需要它告诉我到期日期,即上次设置的日期 + 90 天
#!/bin/bash
pass="$(ldapsearch -Y GSSAPI -Q -H ldap:///dc%3Dant%2Cdc%3Dwork%2Cdc%3Dcom -b DC=ant,DC=work,DC=com -s sub cn=$1 | grep -Ew 'pwdLastSet:' | awk '{print $2}')"
epoch="$(((${pass}/10000000)-11644473600))"
pwdSet="$(date -d @${epoch})"
expires="$("${pwdSet}" --date +90+days)"
echo "pwdLastSet: "$pwdSet
echo "pwdExpires: "$expires
该线;
expires="$("${pwdSet}" --date +90+days)"
有问题的
答案1
这一行没有任何意义。Bash 中没有类似 PowerShell 中的日期对象;$pwdSet 只是一个字符串,被解释为要运行的命令。
所以您需要使用一个可以获取日期和偏移量的工具;date -d
可以确信这样做,但这取决于日期格式。
但是,通过添加所需的秒数来调整纪元时间并仅将最终结果转换为日期要简单得多:
expires=$(date -d "@$((epoch + 86400*90))")
1天几乎总是86400秒。