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