Tag Archives: bash

send stuff to telegram bot command-line globally

preface

As you have seen in the other posts, I like to use a telegram bot for my notifications with domoticz. But I also like to use it to notify me from scripts.

After a while I found myself adding the same long ‘curl etc etc’-commands in every script, so it was time to create a little script that holds everything I need and can be used globally.

prerequisites

You need to have a telegram bot already up and running. Like earlier is found this tutorial to be pretty good.

code

create a new file called ‘tg’ and ‘chmod +x’ it. Then edit it like so:

#!/bin/bash
bot_id="insert your bot id here"
api_key="your api-key here"
chat_id="your chat-id here"
action="sendMessage"
curl -s "https://api.telegram.org/$bot_id:$api_key/$action?chat_id=$chat_id&text=$1"

After that create a symlink to ‘/bin/tg’. Because ‘/bin’ is usually in the ‘search path’ for commands it will be accessible from everywhere.

result

now you can use it ‘globaly’ from scripts or command line:

root@host:/$ tg "blabla bla"

And it will send your text to your Telegram bot:

screen-shot-2016-10-29-at-18-16-11

push speedtest results to domoticz

Preface

I needed to monitor my internet bandwith because it was flappy.

Decided to push speedtest information to domoticz (easy graphs, easy notifications).

1. install speedtest (apt-get install speedtest-cli)
2. create 3 virtual counters in domoticz (and remember the idx’s)
3. create a script, put in the variables and chmod +x it
4. crontab -e it (I cron it @hourly)

Code

#!/bin/bash
#setup
host=xxx.xxx.xxx.xxx
port=xxxx
username=xxx
password=xxx
pingidx=xxx
downloadidx=xxx
uploadidx=xxx
#
# no need to edit
speedtest-cli --simple > output.txt
ping=$(cat output.txt | sed -ne 's/^Ping: \([0-9]*\.[0-9]*\).*/\1/p')
download=$(cat output.txt | sed -ne 's/^Download: \([0-9]*\.[0-9]*\).*/\1/p')
upload=$(cat output.txt | sed -ne 's/^Upload: \([0-9]*\.[0-9]*\).*/\1/p')
#output if you run it manually
echo "ping = $ping ms"
echo "download = $download Mbps"
echo "upload = $upload Mbps"

# Push -> domoticz
curl -s -i -H "Accept: application/json" "http://$username:$password@$host:$port/json.htm?type=command&param=udevice&idx=$pingidx&svalue=$ping"
curl -s -i -H "Accept: application/json" "http://$username:$password@$host:$port/json.htm?type=command&param=udevice&idx=$downloadidx&svalue=$download"
curl -s -i -H "Accept: application/json" "http://$username:$password@$host:$port/json.htm?type=command&param=udevice&idx=$uploadidx&svalue=$upload"

Result

screen-shot-2016-10-22-at-19-57-29