Skip to content

Instantly share code, notes, and snippets.

@franciscojsc
Last active September 29, 2021 22:21
Show Gist options
  • Save franciscojsc/99957f93e533e536baa8085ab7586004 to your computer and use it in GitHub Desktop.
Save franciscojsc/99957f93e533e536baa8085ab7586004 to your computer and use it in GitHub Desktop.
Check login in Xubuntu and send status in email with IFTTT

Check Login in Xubuntu

Add premission to file:

chmod +x check-login.sh

Move file check-login.sh:

mv check-login /usr/local/bin/

Create cron in system:

nano /etc/crontab

Add in last line:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
# Check login
*/10 * * * *    root    /usr/local/bin/check-login.sh
#! /bin/bash
# IFTTT
# Get your KEY = https://ifttt.com/maker_webhooks
EVENT=login
KEY=
URL=https://maker.ifttt.com/trigger/${EVENT}/with/key/${KEY}
VALUE='{"value1":"Machine: '$HOSTNAME'","value2":"Uptime: '$(uptime)'","value3":"Users: '$(who)'"}'
TIME_VERIFY=10
LOG_LOGIN=$(cat /var/log/auth.log | grep "xfce4-screensaver-dialog: gkr-pam: unlocked login keyring" | tail -n 1)
LAST_HOUR_LOGIN=$(echo "${LOG_LOGIN}" | cut -d" " -f3 | cut -d: -f1)
LAST_MINUTE_LOGIN=$(echo "${LOG_LOGIN}" | cut -d: -f2)
NOW_HOUR=$(date | cut -d" " -f5 | cut -d: -f1)
NOW_MINUTE=$(date | cut -d: -f2)
DIFFERENCE=$(((LAST_MINUTE_LOGIN+(LAST_HOUR_LOGIN*60))-(NOW_MINUTE+(NOW_HOUR*60))))
X=${DIFFERENCE#-}
# TODO Check hour (23h57m - 00h01m)
if [ "${LAST_HOUR_LOGIN}" -gt "${NOW_HOUR}" ]; then
DIFFERENCE=$((((1*60)+LAST_MINUTE_LOGIN)-(NOW_MINUTE+(2*60))))
X=${DIFFERENCE#-}
echo "1 if"
fi
if [ "${X}" -le "${TIME_VERIFY}" ]; then
curl -X POST -H "Content-Type: application/json" -d "${VALUE}" "${URL}"
else
exit 1
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment