Мені вдалося створити сценарій, який працює саме для моєї проблеми. Дякую @kos за відповідь - це допомогло мені показати сам діалог.
Я написав сценарій на основі цього рішення, але оскільки dscl
для мене це недоступно, я шукав інший спосіб запиту AD. Цей запис у блозі допоміг мені почати та знайти рішення, щоб отримати саме те, що я шукав.
Отже, ось мій сценарій, який я просто запускаю при запуску сесії:
#!/bin/bash
pwPolicy=90
warnDays=10
user=`whoami`
userRecord=`ldapsearch -h mydomain.de -b 'dc=mydomain,dc=de' "(sAMAccountName=${user})" 2>/dev/null`
lastpwdMS=`grep -i pwdLastSet <<< "$userRecord" | sed 's/pwdLastSet: //'`
todayUnix=`date "+%s"`
lastpwdUnix=`expr $lastpwdMS / 10000000 - 11644473600`
diffUnix=`expr $todayUnix - $lastpwdUnix`
diffdays=`expr $diffUnix / 86400`
daysremaining=`expr $pwPolicy - $diffdays`
if [ "$daysremaining" -le ${warnDays} ]
then
zenity --info --title="Password expiration" --text="The password for ${user} will expire in ${daysremaining} days."
fi
Я не знайомий з AD, але просто спробуйте, ldapsearch -h mydomain.de -b 'dc=mydomain,dc=de' "(sAMAccountName=${user})" 2>/dev/null
якщо він працює для вас.
IMO це рішення не є ні гарним, ні корисним для інших сценаріїв, але воно вирішує цю єдину проблему. Мені все ще цікаво, чи хтось знає, як просто показати діалогове вікно із повідомленнями, які з’являться під час входу через ssh.