Cron Jobs Integration
Notify when scheduled tasks complete.
Basic Usage
In your crontab (crontab -e):
Terminal
# Daily backup at 2 AM
0 2 * * * /path/to/backup.sh && curl -s -X POST 'YOUR_WEBHOOK_URL' -H 'Content-Type: application/json' -d '{"title": "Backup Complete"}'
# Weekly report on Sundays
0 9 * * 0 /path/to/report.sh && curl -s -X POST 'YOUR_WEBHOOK_URL' -H 'Content-Type: application/json' -d '{"title": "Weekly Report Generated"}'
# With error notification
0 3 * * * /path/to/job.sh || curl -s -X POST 'YOUR_WEBHOOK_URL' -H 'Content-Type: application/json' -d '{"title": "Cron Job Failed", "priority": "high"}'Preview
Backup Complete
just nowSuccess and Failure Notifications
Notify on both success and failure with different messages:
Terminal
0 2 * * * /path/to/backup.sh && curl -s -X POST 'YOUR_URL' -H 'Content-Type: application/json' -d '{"title": "✅ Backup Complete"}' || curl -s -X POST 'YOUR_URL' -H 'Content-Type: application/json' -d '{"title": "❌ Backup Failed", "priority": "high"}'Preview
✅ Backup Complete
just nowUsing a Wrapper Script
Create /usr/local/bin/notify-cron:
Terminal
#!/bin/bash
PING_URL="${PING_WEBHOOK_URL}"
JOB_NAME="$1"
shift
CMD="$*"
# Run the command
OUTPUT=$($CMD 2>&1)
EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
curl -s -X POST "$PING_URL" \
-H 'Content-Type: application/json' \
-d "{\"title\": \"✅ $JOB_NAME\", \"body\": \"Completed successfully\"}"
else
curl -s -X POST "$PING_URL" \
-H 'Content-Type: application/json' \
-d "{\"title\": \"❌ $JOB_NAME Failed\", \"body\": \"Exit code: $EXIT_CODE\n$OUTPUT\", \"priority\": \"high\"}"
fi
exit $EXIT_CODEMake it executable:
Terminal
chmod +x /usr/local/bin/notify-cronUse in crontab:
Terminal
0 2 * * * PING_WEBHOOK_URL='YOUR_URL' /usr/local/bin/notify-cron "Daily Backup" /path/to/backup.sh
0 4 * * * PING_WEBHOOK_URL='YOUR_URL' /usr/local/bin/notify-cron "Log Rotation" /path/to/rotate-logs.shSystemd Timers Alternative
For more robust scheduling, use systemd timers:
# /etc/systemd/system/backup.service
[Unit]
Description=Daily Backup
After=network.target
[Service]
Type=oneshot
ExecStart=/path/to/backup.sh
ExecStartPost=/usr/bin/curl -s -X POST 'YOUR_WEBHOOK_URL' -H 'Content-Type: application/json' -d '{"title": "Backup Complete"}'Preview
Backup Complete
just now# /etc/systemd/system/backup.timer
[Unit]
Description=Daily Backup Timer
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.targetEnable with:
Terminal
systemctl enable --now backup.timer