<!-- https://hilite.me/ | bash | borland --> <!-- HTML generated using hilite.me --> <pre style="color:#000000; margin: 0; line-height: 125%" class="yellow-code"> <span style="color: #008800; font-style: italic">#!/usr/bin/env bash</span> <span style="color: #008800; font-style: italic">#</span> <span style="color: #008800; font-style: italic"># Wrapper around SCN ( https://scn.blackforestbytes.com/ )</span> <span style="color: #008800; font-style: italic"># ========================================================</span> <span style="color: #008800; font-style: italic">#</span> <span style="color: #008800; font-style: italic"># ./scn_send [@channel] title [content] [priority]</span> <span style="color: #008800; font-style: italic">#</span> <span style="color: #008800; font-style: italic">#</span> <span style="color: #008800; font-style: italic"># Call with scn_send "${title}"</span> <span style="color: #008800; font-style: italic"># or scn_send "${title}" ${content}"</span> <span style="color: #008800; font-style: italic"># or scn_send "${title}" ${content}" "${priority:0|1|2}"</span> <span style="color: #008800; font-style: italic"># or scn_send "@${channel} "${title}"</span> <span style="color: #008800; font-style: italic"># or scn_send "@${channel} "${title}" ${content}"</span> <span style="color: #008800; font-style: italic"># or scn_send "@${channel} "${title}" ${content}" "${priority:0|1|2}"</span> <span style="color: #008800; font-style: italic">#</span> <span style="color: #008800; font-style: italic">#</span> <span style="color: #008800; font-style: italic">################################################################################</span> <span style="color: #008800; font-style: italic"># INSERT YOUR DATA HERE #</span> <span style="color: #008800; font-style: italic">################################################################################</span> user_id=<span style="color: #0000FF">"999"</span> user_key=<span style="color: #0000FF">"??"</span> <span style="color: #008800; font-style: italic">################################################################################</span> usage() { echo <span style="color: #0000FF">"Usage: "</span> echo <span style="color: #0000FF">" scn_send [@channel] title [content] [priority]"</span> echo <span style="color: #0000FF">""</span> } args=( <span style="color: #0000FF">"$@"</span> ) title=$1 content=<span style="color: #0000FF">""</span> channel=<span style="color: #0000FF">""</span> priority=1 usr_msg_id=<span style="color: #0000FF">"$(uuidgen)"</span> sendtime=<span style="color: #0000FF">"$(date +%s)"</span> sender=<span style="color: #0000FF">"$(hostname)"</span> <span style="color: #000080; font-weight: bold">if</span> [ <span style="color: #000080; font-weight: bold">${#</span>args[@]<span style="color: #000080; font-weight: bold">}</span> -lt 1 ]; <span style="color: #000080; font-weight: bold">then</span> <span style="color: #000080; font-weight: bold"> </span>echo <span style="color: #0000FF">"[ERROR]: no title supplied via parameter"</span> 1>&2 usage exit 1 <span style="color: #000080; font-weight: bold">fi</span> <span style="color: #000080; font-weight: bold">if</span> [[ <span style="color: #0000FF">"${args[0]}"</span> =~ ^@.* ]]; <span style="color: #000080; font-weight: bold">then</span> <span style="color: #000080; font-weight: bold"> </span>channel=<span style="color: #0000FF">"${args[0]}"</span> unset <span style="color: #0000FF">"args[0]"</span> channel=<span style="color: #0000FF">"${channel:1}"</span> <span style="color: #000080; font-weight: bold">fi</span> <span style="color: #000080; font-weight: bold">if</span> [ <span style="color: #000080; font-weight: bold">${#</span>args[@]<span style="color: #000080; font-weight: bold">}</span> -lt 1 ]; <span style="color: #000080; font-weight: bold">then</span> <span style="color: #000080; font-weight: bold"> </span>echo <span style="color: #0000FF">"[ERROR]: no title supplied via parameter"</span> 1>&2 usage exit 1 <span style="color: #000080; font-weight: bold">fi</span> title=<span style="color: #0000FF">"${args[0]}"</span> content=<span style="color: #0000FF">""</span> <span style="color: #000080; font-weight: bold">if</span> [ <span style="color: #000080; font-weight: bold">${#</span>args[@]<span style="color: #000080; font-weight: bold">}</span> -gt 1 ]; <span style="color: #000080; font-weight: bold">then</span> <span style="color: #000080; font-weight: bold"> </span>content=<span style="color: #0000FF">"${args[0]}"</span> unset <span style="color: #0000FF">"args[0]"</span> <span style="color: #000080; font-weight: bold">fi</span> <span style="color: #000080; font-weight: bold">if</span> [ <span style="color: #000080; font-weight: bold">${#</span>args[@]<span style="color: #000080; font-weight: bold">}</span> -gt 1 ]; <span style="color: #000080; font-weight: bold">then</span> <span style="color: #000080; font-weight: bold"> </span>priority=<span style="color: #0000FF">"${args[0]}"</span> unset <span style="color: #0000FF">"args[0]"</span> <span style="color: #000080; font-weight: bold">fi</span> <span style="color: #000080; font-weight: bold">if</span> [ <span style="color: #000080; font-weight: bold">${#</span>args[@]<span style="color: #000080; font-weight: bold">}</span> -gt 1 ]; <span style="color: #000080; font-weight: bold">then</span> <span style="color: #000080; font-weight: bold"> </span>echo <span style="color: #0000FF">"Too many arguments to scn_send"</span> 1>&2 usage exit 1 <span style="color: #000080; font-weight: bold">fi</span> <span style="color: #000080; font-weight: bold">while </span>true ; <span style="color: #000080; font-weight: bold">do</span> <span style="color: #000080; font-weight: bold"> </span>curlresp=<span style="color: #000080; font-weight: bold">$(</span>curl --silent <span style="color: #0000FF">\</span> --output /dev/null <span style="color: #0000FF">\</span> --write-out <span style="color: #0000FF">"%{http_code}"</span> <span style="color: #0000FF">\</span> --data <span style="color: #0000FF">"user_id=$user_id"</span> <span style="color: #0000FF">\</span> --data <span style="color: #0000FF">"user_key=$user_key"</span> <span style="color: #0000FF">\</span> --data <span style="color: #0000FF">"title=$title"</span> <span style="color: #0000FF">\</span> --data <span style="color: #0000FF">"timestamp=$sendtime"</span> <span style="color: #0000FF">\</span> --data <span style="color: #0000FF">"content=$content"</span> <span style="color: #0000FF">\</span> --data <span style="color: #0000FF">"priority=$priority"</span> <span style="color: #0000FF">\</span> --data <span style="color: #0000FF">"msg_id=$usr_msg_id"</span> <span style="color: #0000FF">\</span> --data <span style="color: #0000FF">"channel=$channel"</span> <span style="color: #0000FF">\</span> --data <span style="color: #0000FF">"sender_name=$sender"</span> <span style="color: #0000FF">\</span> <span style="color: #0000FF">"https://scn.blackforestbytes.com/"</span> <span style="color: #000080; font-weight: bold">)</span> <span style="color: #000080; font-weight: bold">if</span> [ <span style="color: #0000FF">"$curlresp"</span> == 200 ] ; <span style="color: #000080; font-weight: bold">then</span> <span style="color: #000080; font-weight: bold"> </span>echo <span style="color: #0000FF">"Successfully send"</span> exit 0 <span style="color: #000080; font-weight: bold">fi</span> <span style="color: #000080; font-weight: bold"> if</span> [ <span style="color: #0000FF">"$curlresp"</span> == 400 ] ; <span style="color: #000080; font-weight: bold">then</span> <span style="color: #000080; font-weight: bold"> </span>echo <span style="color: #0000FF">"Bad request - something went wrong"</span> 1>&2 exit 1 <span style="color: #000080; font-weight: bold">fi</span> <span style="color: #000080; font-weight: bold"> if</span> [ <span style="color: #0000FF">"$curlresp"</span> == 401 ] ; <span style="color: #000080; font-weight: bold">then</span> <span style="color: #000080; font-weight: bold"> </span>echo <span style="color: #0000FF">"Unauthorized - wrong userid/userkey"</span> 1>&2 exit 1 <span style="color: #000080; font-weight: bold">fi</span> <span style="color: #000080; font-weight: bold"> if</span> [ <span style="color: #0000FF">"$curlresp"</span> == 403 ] ; <span style="color: #000080; font-weight: bold">then</span> <span style="color: #000080; font-weight: bold"> </span>echo <span style="color: #0000FF">"Quota exceeded - wait one hour before re-try"</span> 1>&2 sleep 3600 <span style="color: #000080; font-weight: bold">fi</span> <span style="color: #000080; font-weight: bold"> if</span> [ <span style="color: #0000FF">"$curlresp"</span> == 412 ] ; <span style="color: #000080; font-weight: bold">then</span> <span style="color: #000080; font-weight: bold"> </span>echo <span style="color: #0000FF">"Precondition Failed - No device linked"</span> 1>&2 exit 1 <span style="color: #000080; font-weight: bold">fi</span> <span style="color: #000080; font-weight: bold"> if</span> [ <span style="color: #0000FF">"$curlresp"</span> == 500 ] ; <span style="color: #000080; font-weight: bold">then</span> <span style="color: #000080; font-weight: bold"> </span>echo <span style="color: #0000FF">"Internal server error - waiting for better times"</span> 1>&2 sleep 60 <span style="color: #000080; font-weight: bold">fi</span> <span style="color: #008800; font-style: italic"># if none of the above matched we probably hav no network ...</span> echo <span style="color: #0000FF">"Send failed (response code $curlresp) ... try again in 5s"</span> 1>&2 sleep 5 <span style="color: #000080; font-weight: bold">done</span> </pre>