parent
8e4dc790d9
commit
cac5d46fda
@ -0,0 +1,54 @@
|
||||
#!/usr/bin/python3
|
||||
"""
|
||||
CustomAlertScript.py
|
||||
|
||||
This is an example script that can be ran by cron at custom intervals.
|
||||
This script is a simplifies version of the AlertScript function included in SkywarnPlus.
|
||||
It will check the last alerts from SkywarnPlus and execute commands associated with them.
|
||||
|
||||
The purpose of this is to allow you to run AlertScript commands at custom intervals,
|
||||
rather than only running commands when alerts are first detected.
|
||||
|
||||
Example:
|
||||
Trigger SkyDescribe.py for all alerts that contain the word "Warning" in the title, once per hour.
|
||||
Crontab entry: 0 * * * * /usr/local/bin/SkywarnPlus/CustomAlertScript.py
|
||||
|
||||
You can create as many copies of this script as you want to execute different commands at different intervals.
|
||||
"""
|
||||
|
||||
import json
|
||||
import subprocess
|
||||
import fnmatch
|
||||
|
||||
# The trigger alerts and associated commands
|
||||
# Replace or add more trigger commands as required.
|
||||
|
||||
# Path to the SkywarnPlus data file
|
||||
DATA_FILE = '/tmp/SkywarnPlus/data.json'
|
||||
|
||||
# Alert triggers & commands
|
||||
TRIGGER_ALERTS = {
|
||||
# Trigger SkyDescribe.py for all alerts that contain the word "Warning" in the title
|
||||
"*Warning": "/usr/local/bin/SkywarnPlus/SkyDescribe.py \"{alert_title}\"",
|
||||
}
|
||||
|
||||
def match_trigger(alert_title):
|
||||
for pattern, command in TRIGGER_ALERTS.items():
|
||||
if fnmatch.fnmatch(alert_title, pattern):
|
||||
return command.format(alert_title=alert_title)
|
||||
return None
|
||||
|
||||
def main():
|
||||
# Load the data
|
||||
with open(DATA_FILE, 'r') as f:
|
||||
data = json.load(f)
|
||||
|
||||
# Check if the trigger alerts are in the last alerts
|
||||
for alert in data["last_alerts"]:
|
||||
command = match_trigger(alert[0])
|
||||
if command:
|
||||
print("Executing command for alert: {}".format(alert[0]))
|
||||
subprocess.run(command, shell=True)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Reference in new issue