Linux – Netcat für x Sekunden auf TCP-RAW zugreifen

Bei der Wetterstation unserer Vereins gab es das Problem, dass wir die Wetterdaten in Serieller Form erhalten und diese irgend eine Art und Weise an den Server übertragen mussten. Die Idee, die seriellen Daten in einer Text-Datei zu speichern und dann hochzuladen war sehr unstabil und wurde deshalb nicht weiter verfolgt. Als Lösung wurde dann „Ser2Net“ genutzt, hierbei wir der serielle Datenverkehr direkt in einen TCP-RAW-Stream umgewandelt und zur Verfügung gestellt.

Auf der Serverseite musste also nurnoch Zykisch die Daten aus diesem Stream gelesen werden. Dies ermöglichen ein paare Zeilen. Die denn Stream für x.Sekunden lesen und das empfangene dann in einer Datei speichern.

Hier das der Code

timeout 5 nc -v 89.82.89.23 1235 > tcp_raw.txt
#timeout 5 = Befehl wird nach 5.Sekunden beendet
#nc -v 89.82.89.23 1235 = TCP-RAW-Stream von IP:89.82.89.23 auf Port:1235 wird ausgegeben und
# > tcp_raw.txt = Schreibt das ganze in eine Datei

Hier der gesamte Code der benutzt wurde. Durch weitere Schleifen wurden bestimmte Fehlerfälle versucht zu vermeiden.

#Lese per NetCat den Serial-Datenstream für 5.Sekunden
#und speichere den Inhalt in einer Datei
#================================================================
#Aktuelle Unix-Zeit
now=$(date +%s) 
#Zeit in 10.Sekunden
in_10=$((now+10))

# While die Prüft ob die 10.Sekunden seit Start vergangen sind
while [[ $in_10 > $(date +%s) ]]
do
	#Lösche alte Datei
	rm tcp_raw.txt
	#Führe den Befehl für 5.Sekunden aus und speichere den Inhalt in einer Datei
	timeout 5 nc -v 89.82.89.23 1235 > tcp_raw.txt
	#Weitere 6.Sekunden um garaniert nichtmehr in die While-Schleife zu laufen
    sleep 6
done

Im Prinzip würde


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert