Anbei die Skripte. Als Beispiel nutze ich Litecoin. Der Coin ist aber leicht anpassbar.
Der Pfad wo alles liegt ist:
Wir beginnen mit einer Datei (ltc_addresses.txt), welche Adressen von Interesse enthält:
LTU2cds4aSdXFip9sV4gXphnhxGQjgfjmg
LQL9pVH1LsMfKwt82Y2wGhNGkrjF8vwUst
LPpHectVSbk7YHa5X89Cm3FoFBfzkJBJc9
LRcYfbDMhwvXaGPFccaKuc3fZD1Nb55aGn
LY5fxZS74Ewuj1TTHwat23eUmZwimsksrU
Laub752qu81oWwkNKEyawyKruUC6cEyD2x
LbHBMZTQBq7aM5WS5TeKYJWH8pxeaLoRXe
LPpVeFSKvH593CChqP9qpV5toEXntekjiF
LZYCpYnV8VE4X7TbH8jjuvYPMfAugGLNAs
LfmG6qepmucU2aQaVJK4EJgBzQHeGz5ML4
Dabei sollte es egal sein wie die Adressen in der Datei vorliegen, aber am Besten ist es wohl, wenn in jeder Zeile eine gelistet ist.
Desweiteren erzeugen wir ein Skript (ltc_balances.sh), welches sich die entsprechenden Balances von bitinfocharts zieht:
#!/bin/bash
addresses=$(cat ltc_addresses.txt | grep -E -o "L[a-zA-Z0-9]{10,40}");
while read -r address;
do
info=$(wget -qO- https://bitinfocharts.com/litecoin/address/$address --user-agent="Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0");
balance=$(echo "$info" | grep "Balance" | grep -Eo "Balance.*[0-9]+([.][0-9]+)*.+LTC" | grep -Eo "[,0-9]+([.][0-9]+)*" | head -1 | sed "s/,//g");
if [[ "$balance" == "" ]]; then
balance="0";
fi
echo -e "$address\t$balance\tLTC";
done <<< "$addresses"
Das Ganze muss natürlich ausführbar sein und deshalb:
chmod 755 ltc_balances.sh
Ausführen des Skripts:
Führt zu folgender Ausgabe:
LTU2cds4aSdXFip9sV4gXphnhxGQjgfjmg 1086671.28 LTC
LQL9pVH1LsMfKwt82Y2wGhNGkrjF8vwUst 897135.39 LTC
LPpHectVSbk7YHa5X89Cm3FoFBfzkJBJc9 897070.97 LTC
LRcYfbDMhwvXaGPFccaKuc3fZD1Nb55aGn 895520.96 LTC
LY5fxZS74Ewuj1TTHwat23eUmZwimsksrU 773647.37 LTC
Laub752qu81oWwkNKEyawyKruUC6cEyD2x 768207.51 LTC
LbHBMZTQBq7aM5WS5TeKYJWH8pxeaLoRXe 762497.23 LTC
LPpVeFSKvH593CChqP9qpV5toEXntekjiF 704140.10 LTC
LZYCpYnV8VE4X7TbH8jjuvYPMfAugGLNAs 700000.00 LTC
LfmG6qepmucU2aQaVJK4EJgBzQHeGz5ML4 694655.63 LTC
Zusätzlich erzeugen wir uns ein Metaskript (balances.sh), welches Oberes für verschiedenste Coins ausführt, im Beispiel natürlich nur für Litecoin:
#!/bin/bash
path="/home/user/balances"
cd $path
echo "# LTC"
./ltc_balances.sh
Die Datei muss wieder ausführbar gemacht werden.
Jetzt benötigen wir noch ein Metametaskript (check_balances.sh), welches den alten und neuen Zustand der Balances vergleicht:
#!/bin/bash
epoch=$(date +%s);
path="/home/user/balances";
$path/balances.sh > $path/balances.$epoch.txt
old=$(find $path -name "balances.*.txt" | uniq | sort | tail -n2 | head -n1);
new=$(find $path -name "balances.*.txt" | uniq | sort | tail -n1);
echo "comparing $old with $new";
hold=$(md5sum $old | cut -d " " -f 1);
hnew=$(md5sum $new | cut -d " " -f 1);
echo "comparing $hold with $hnew";
info="0";
if [[ $hold == $hnew ]]
then
#info=$(wget -qO- "http://api.lima-city.de/sms?user_id=<user_id>&apikey=<api_key>&text=<ok_text>&number=<tel_number>");
echo "ok"
else
#info=$(wget -qO- "http://api.lima-city.de/sms?user_id=<user_id>&apikey=<api_key>&text=<not_ok_text>&number=<tel_number>");
echo "data differs";
fi
echo "$info"
Die Werte für <user_id>, <api_key>, <ok_text>, <not_ok_text> und <tel_number> müsst ihr entsprechend anpassen. In oberem Skript ist der wget-Aufruf auskommentiert, welcher die SMS erzeugt. Das müsst ihr also auch anpassen. Auch dieses Skript muss wieder ausführbar gemacht werden.
Der letzte Schritt besteht darin, einen cronjob zu installieren, welcher check_balances.sh regelmässig aufruft:
Und dann folgende Zeile einfügen:
0 12 * * * /home/user/balances/check_balances.sh >> /home/user/balances/balances.out
Oberer Cronjob testet einmal täglich die gegebenen Adressen um 12 Uhr mittags. Nun wird, abhängig vom einkommentierten wget-Aufruf in check_balances.sh, eine SMS verschickt, mit dem entsprechenden Text. Die Datei balances.out enthält Output von check_balances.sh zum Entkäfern falls mal etwas nicht funktionieren sollte.
Die ganze Geschichte funktioniert natürlich nur, wenn auch bitinfocharts funktioniert. Sollten die etwas an ihrer Ausgabe ändern, so ist der reguläre Ausdruck in ltc_balances.sh natürlich Makulatur. Desweiteren braucht ihr einen Server, der ständig bzw. um 12:00 mittags rum online ist. Dafür bietet sich ein Himbeerkuchen an.
Ihr könnt natürlich die Parameter variieren wie ihr lustig seid. Kommt immer auf die Ausprägung der eigenen Paranoia an.