57 lines
1 KiB
Bash
57 lines
1 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
STATE_DIR="$(dirname $(readlink -f "$0"))/_state"
|
||
|
URLS=(
|
||
|
'https://tmp.tobast.fr/testcurl'
|
||
|
)
|
||
|
PATTERNS=(
|
||
|
'1'
|
||
|
)
|
||
|
MESSAGES=(
|
||
|
'match'
|
||
|
)
|
||
|
|
||
|
|
||
|
function do_one {
|
||
|
if [ "$#" -lt 4 ] ; then
|
||
|
>&2 echo "Missing argument to do_one."
|
||
|
return
|
||
|
fi
|
||
|
|
||
|
url="$1"
|
||
|
pattern="$2"
|
||
|
msg="$3"
|
||
|
elt_id="$4"
|
||
|
state_path="$STATE_DIR/$elt_id"
|
||
|
|
||
|
curl -s "$url" | grep -q "$pattern"
|
||
|
no_match="$?"
|
||
|
|
||
|
if [ "$no_match" -eq 1 ]; then
|
||
|
if [ -f "$state_path" ] ; then
|
||
|
rm -f "$state_path"
|
||
|
fi
|
||
|
else # match
|
||
|
if ! [ -f "$state_path" ] ; then # no previous match
|
||
|
echo "NEW MATCH: $msg"
|
||
|
touch "$state_path"
|
||
|
fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
if [ "${#URLS[@]}" -ne "${#PATTERNS[@]}" ] \
|
||
|
|| [ "${#URLS[@]}" -ne "${#MESSAGES[@]}" ]
|
||
|
then
|
||
|
>&2 echo "Bad configuration: unbalanced number of elements"
|
||
|
exit 2
|
||
|
fi
|
||
|
mkdir -p "$STATE_DIR"
|
||
|
|
||
|
for elt_id in "${!URLS[@]}"; do
|
||
|
do_one \
|
||
|
"${URLS[$elt_id]}" \
|
||
|
"${PATTERNS[$elt_id]}" \
|
||
|
"${MESSAGES[$elt_id]}" \
|
||
|
"$elt_id"
|
||
|
done
|