bin/bash - Daten an URL hängen !!

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
dth666
Beiträge: 4
Registriert: 09.05.2013 11:29:26

bin/bash - Daten an URL hängen !!

Beitrag von dth666 » 25.05.2013 18:30:29

Moinsen,

also mit einer Bin/bash Datei (auslese.sh) Lese ich aktuell mehrere Daten aus.
Zum Beispiel den Uptime. Davon möchte ich gerne die Sekunden an eine Webadresse übermitteln.
Finde nichts dazu, wie ich diese mit bin/bash an einer URL hängen kann und das die Automatisch bei Aufruf der Datei abgesendent wird (per Cron).
Möchte gerne alles in einer Datei belassen.

Jemand Ideen oder Anregungen wie ich das Realesieren könnte ?

Gruß
dennis

Benutzeravatar
Six
Beiträge: 8066
Registriert: 21.12.2001 13:39:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Siegburg

Re: bin/bash - Daten an URL hängen !!

Beitrag von Six » 25.05.2013 18:48:06

Du kannst mit curl -T (--upload-file) ganz normale PUTs durchführen, lese die man-Page für upload von stdin etc. Natürlich muss der Webserver damit was anfangen können, aber das ist ein anderes Problem.
Be seeing you!

wanne
Moderator
Beiträge: 7550
Registriert: 24.05.2010 12:39:42

Re: bin/bash - Daten an URL hängen !!

Beitrag von wanne » 26.05.2013 00:49:37

Also damit der auf der anderen Seite das versteht, muss er den entsprehenden GET parameter abfragen. Ansonsten währe es ganz geschickt, was auslese.sh so ausgibt. XML? CSV?
Wenn dia so ne Zeile rauskommt: Uptime;3432 (für 3432 Sekunden) und der GTP-parameter get_parameter heißst sieht das so aus:

Code: Alles auswählen

wget "https://URL/Pfad?get_parameter=$(./auslese.sh | grep Uptime| cut -d ';' -f2| tr -d '\n')" -O /dev/stdout > /dev/null
rot: Moderator wanne spricht, default: User wanne spricht.

dth666
Beiträge: 4
Registriert: 09.05.2013 11:29:26

Re: bin/bash - Daten an URL hängen !!

Beitrag von dth666 » 26.05.2013 11:59:22

Ich bin etwas verwirrt und stehe aufn Schlauch ...

Code: Alles auswählen

#!/bin/bash
# uptime.sh
# get uptime from /proc/uptime

uptime=$(</proc/uptime)
uptime=${uptime%%.*}

seconds=$(( uptime%60 ))
Das ist der Code (Funktioniert) für das Uptime. Die Url sieht so aus: domain.tld/einedatei.php/?user=benutzername&pw=kennwort&uptime=UPTIME&os=version...

Habe ein Problem damit:

1: die Variable "$seconds" in die URL bei UPTIME reinzuprügeln
2: Die Url so-gesehen dann anschließend "Virtuell" angeklickt wird, die Gegenseite nimmt es mit GET entgegen ! .. Wget eine alternative zu Curl ?

Glaube bin u Doof :roll:

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: bin/bash - Daten an URL hängen !!

Beitrag von Cae » 26.05.2013 13:18:59

Mach' die Berechnung auf Minuten und Sekunden auf der Gegenseite. Fuer die Uebertragung eignet sich das in Sekunden gegossen besser:

Code: Alles auswählen

$ wget -O /dev/null "http://example.org/?uptime=$(cut -d. -f1 /proc/uptime)"
--2013-05-26 13:17:22--  http://example.org/?uptime=1638
Resolving example.org (example.org)... 192.0.43.10, 2001:500:88:200::10
Connecting to example.org (example.org)|192.0.43.10|:80... connected.
...
Auf der Gegenseite koennte z.B. ein CGI-Skript sitzen, beispielsweise

Code: Alles auswählen

#!/bin/sh
printf %s "$QUERY_STRING" | sed 's/^.*uptime=\([0-9]\+\).*$/\1/' >/tmp/uptime
-- was die Uptime in eine Datei /tmp/uptime loggen wuerde.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

wanne
Moderator
Beiträge: 7550
Registriert: 24.05.2010 12:39:42

Re: bin/bash - Daten an URL hängen !!

Beitrag von wanne » 26.05.2013 15:13:55

dth666 hat geschrieben:Das ist der Code (Funktioniert) für das Uptime. Die Url sieht so aus: domain.tld/einedatei.php/?user=benutzername&pw=kennwort&uptime=UPTIME&os=version...

Habe ein Problem damit:

1: die Variable "$seconds" in die URL bei UPTIME reinzuprügeln
Wiso?

Code: Alles auswählen

GET "https://domain.tld/einedatei.php/?user=benutzername&pw=kennwort&uptime=$seconds&os=version..."
(Dazu musst du das natürlich in dem script ausführen. Sonst musst du das script mit . uptime.sh ausführen. Sonst gehen die Variablem beim Beenden des Scriptes verloren.
dth666 hat geschrieben:Wget eine alternative zu Curl ?
Ja, hat aber eine andere Ausrichtung. Kann rekursiv arbeiten und ist eher zum herunterladen von Websites als von Dateien.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: bin/bash - Daten an URL hängen !!

Beitrag von ThorstenS » 26.05.2013 16:19:15

Nur mal als Denkanstoß: Hast du den DNS deines Systems unter Kontrolle?
Ich setze bei der DSL-Einwahl meiner "Aussenstellen" nicht nur die aktuelle IP-Adresse sondern als TXT-Record auch den Zeitpunkt des Updates:

Code: Alles auswählen

function NSupdate {
	        nsupdate -k /etc/cfengine2/dnsupdate/Ksub.domain.tld.+157+35462.key
}
echo -e "update delete $HORST.sub.domain.tld\nsend" | NSupdate
echo -e "update add $HORST.sub.domain.tld 60 IN A $_IP\nsend" | NSupdate
echo -e "update add $HORST.sub.domain.tld 60 TXT $(date --utc "+%Y-%m-%d-%H%M-UTC")\nsend" | NSupdate
echo -e "update add $HORST.sub.domain.tld 86400 MX 50 mx0.domain.tld\nsend" | NSupdate
mit einem

Code: Alles auswählen

dig +short TXT $HORST.sub.domain.tld
kann ich das jederzeit und überall auslesen...
Zuletzt geändert von ThorstenS am 26.05.2013 23:57:06, insgesamt 1-mal geändert.

dth666
Beiträge: 4
Registriert: 09.05.2013 11:29:26

Re: bin/bash - Daten an URL hängen !!

Beitrag von dth666 » 26.05.2013 16:39:53

Dankt euch :-)

wanne hat mich mit GET auf den richtigen Weg gebracht :-)

Antworten