Ergebnis eines Befehls aus Konsole (Putty) als Reading

Begonnen von Floriky, 12 Dezember 2018, 10:52:05

Vorheriges Thema - Nächstes Thema

Floriky

Hallo Zusammen,

Da ich per SYSSTAT einen bestimmten mib(s) meiner Synology nicht auslesen kann (https://forum.fhem.de/index.php/topic,94351.0.html), würde ich gerne das Ergebnis des Konsolen-Befehls:

snmpget -v2c -c GRUPPE 192.168.2.111 1.3.6.1.4.1.6574.3.1.1.5.0


als Reading bei diesem SYSSTAT-Device anlegen. Geht das? Und wenn ja, wie?

Vielen Dank vorab an alle Lesenden und Helfenden

PS: Bitte korrigiert mich bei falschen Termini - lerne gern etwas dazu!

Wernieman

Ich würde anders herum gehen.

Ein Script schreiben (Du hast den Anfang gemacht), dieses per cron (oder fhem) aufrufen und per telnet-Schnitstelle an FHEM liefern.

echo -en "<set blablabla>\nquit\n" | nc -w 5 <fhem-server> 7072 >/dev/null
Bitte <set blablabla> und <fhem-server> passend ändern. Geht übrigens auch mit Passwort und wenn eingerichtet verschlüsselt (siehe Command-Ref). Damit wird dann auich fhem nicht blockiert, falls das Script Probleme macht.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Floriky

Zitat von: Wernieman am 12 Dezember 2018, 11:08:23
Ich würde anders herum gehen.

Ein Script schreiben (Du hast den Anfang gemacht), dieses per cron (oder fhem) aufrufen und per telnet-Schnitstelle an FHEM liefern.

echo -en "<set blablabla>\nquit\n" | nc -w 5 <fhem-server> 7072 >/dev/null
Bitte <set blablabla> und <fhem-server> passend ändern. Geht übrigens auch mit Passwort und wenn eingerichtet verschlüsselt (siehe Command-Ref). Damit wird dann auich fhem nicht blockiert, falls das Script Probleme macht.

Hallo Werniemann,

vielen Dank für deine Antwort. Hab noch nie ein Script geschrieben und habe jetzt mal ein wenig im Internet rumgelesen und da ist mir aufgefallen, dass das was du gepostet ja schon ein Script sein müsste. Nur wo füge ich dort mein "snmpget -v2c -c GRUPPE 192.168.2.111 1.3.6.1.4.1.6574.3.1.1.5." ein? Und warum beginnt es nicht mit "#!/bin/bash" Oder ist das gar kein Script?

Was ich bereits davon verstehe ist (glaube ich zumindest):
- bei echo gibt er was aus, wobei das "-e" dafür sorgt das er alles nach "\" als Befehl erkennt und das -n dafür dass er das "|" nicht mit ausgibt.
- am Ende speicher ich das ganze mit dem vi-Editor unter bspw. "/opt/fhem/blutschweissundtraenen.sh" und schreibe irgendwo in fhem "function {`sudo /opt/fhem/blutschweissundtraenen.sh`}" rein.
- "<fhem-server>" ist die IP meiner FHEM-Instanz
- mit "nc -w 5 <fhem-server> 7072 >" öffnet er die Verbindung zu FHEM Port 7072 und beendet bei Misslingen nach 5 Sekunden die Verbindung
- sorgt dafür, dass sich irgendwas nicht aufhängt

Was ich nicht versteh:
- was macht "\nquit\n" und warum steht es mit einem Befehl der sich, glaube ich, an FHEM richtet in Hochkommas?
- müsste nicht "echo ("snmpget -v2c -c GRUPPE 192.168.2.111 1.3.6.1.4.1.6574.3.1.1.5.)" noch irgendwo rein?

Ich hoffe, die Antwort verursacht nicht allzu viel Arbeit! 

Wernieman

1. Es ist kein komplettes script
2. Mann kann eine telnetverbindung bei fhem mit einem "quit" beenden. ich mag es, wenn man "so nett" ist
also mal echo -en "<set blablabla>\nquit\n" umschrieben
<set blablabla>
quit

das "\n" wird durch "echo -en" zu einem "Enter"
3. Braucht das Script root-Rechte? Wahrscheinlich nicht, also kein sudo!


Richtig wäre es (Ungetestet!!)
#!/bin/bash
FHEM-Server="localhost"

ergebnis=$(snmpget -v2c -c GRUPPE 192.168.2.111 1.3.6.1.4.1.6574.3.1.1.5.)
echo -en "set snmp $ergebnis\nquit\n" | nc -w 5 $FHEM-Server 7072 >/dev/null


Um es mal "richtig" zu machen, könntest Du mir den Output von Deinem snmpget geben?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Beta-User

Kurzer Hinweis:

Wenn das FHEM relativ frisch installiert ist, ist telnet vermutlich nicht aktiv und muß erst eingerichtet werden (spätestens seit dem 5.9-er Release).
Ist leider noch nicht in allen Anleitungen etc. berücksichtigt.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Wernieman

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Beta-User

Zitat von: Wernieman am 12 Dezember 2018, 12:48:27
Ups .. danke für den Hinweis.
http://www.fhem.de/commandref.html#telnet
[OT]
Wenn du als Linux-Spezialist eine Idee hast, wie man das eine oder andere von der Konsole aus erledigen kann, ohne telnet aktiviert zu haben, würde sich Otto123 vermutlich sehr freuen (z.B. wegen hier: https://wiki.fhem.de/wiki/Raspberry_Pi#Empfohlener_Patch)
Habe das nicht im Detail verfolgt, meine aber, dass das bisher nicht geklärt wurde, wie man das u.ä. zukünftig lösen kann, ohne ausgerechnet Noobs auf cfg-Editieren zu verweisen...).
[/OT]
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Floriky

#7
Zitat von: Wernieman am 12 Dezember 2018, 12:44:55
1. Es ist kein komplettes script
2. Mann kann eine telnetverbindung bei fhem mit einem "quit" beenden. ich mag es, wenn man "so nett" ist
also mal echo -en "<set blablabla>\nquit\n" umschrieben
<set blablabla>
quit

das "\n" wird durch "echo -en" zu einem "Enter"
3. Braucht das Script root-Rechte? Wahrscheinlich nicht, also kein sudo!


Richtig wäre es (Ungetestet!!)
#!/bin/bash
FHEM-Server="localhost"

ergebnis=$(snmpget -v2c -c GRUPPE 192.168.2.111 1.3.6.1.4.1.6574.3.1.1.5.)
echo -en "set snmp $ergebnis\nquit\n" | nc -w 5 $FHEM-Server 7072 >/dev/null


Um es mal "richtig" zu machen, könntest Du mir den Output von Deinem snmpget geben?

Vielen lieben Dank für deine Mühen. Das Ergebnis ist: iso.3.6.1.4.1.6574.3.1.1.5.0 = Counter64: 7928574496768. Die 7928574496768 ist die "total_raid_size" meiner Synology in Bytes und um die geht es mir. Einen User und Passwort habe ich im Telnet nicht vergeben. Ist das ok?

Floriky

Zitat von: Beta-User am 12 Dezember 2018, 12:47:25
Kurzer Hinweis:

Wenn das FHEM relativ frisch installiert ist, ist telnet vermutlich nicht aktiv und muß erst eingerichtet werden (spätestens seit dem 5.9-er Release).
Ist leider noch nicht in allen Anleitungen etc. berücksichtigt.

Vielen Dank für den Hinweis. Bei mir (v5.9) war es sogar nötig Telnet vorher zu installieren.

sudo apt-get install telnet

Floriky

Zitat von: Beta-User am 12 Dezember 2018, 12:47:25
Kurzer Hinweis:

Wenn das FHEM relativ frisch installiert ist, ist telnet vermutlich nicht aktiv und muß erst eingerichtet werden (spätestens seit dem 5.9-er Release).
Ist leider noch nicht in allen Anleitungen etc. berücksichtigt.

Noch eine Frage:

Ich hab hier ein Device das heißt "telnetForBlockingFn_1544616830". Muss ich hiermit was tun? HAbe nur den Wiki-Eintrag dazu gefunden (https://wiki.fhem.de/wiki/Blocking_Call) und kann mich nicht erinnern das mal angelegt zu haben. Das hat aber nichts mit dem Telnet zu tun, das ich laut "commandref" anlegen muss, oder?

Beta-User

Zitat von: Floriky am 12 Dezember 2018, 13:15:50
Vielen Dank für den Hinweis. Bei mir (v5.9) war es sogar nötig Telnet vorher zu installieren.

sudo apt-get install telnet
Bin nicht sicher, ob das erforderlich war (mein rudimentäres Verständnis: das ist ein Serverdienst, den stellt aber FHEM (bzw. das tenet-Modul) selbst bereit => nein).

ZitatEinen User und Passwort habe ich im Telnet nicht vergeben. Ist das ok?
Ebenfalls nein: Der Grund, warum telnet aus der "Basis-cfg" raus ist, ist der, dass Sicherheitsbedenken bestanden, wenn eine Schnittstelle ungeschützt offen ist (und oft auch bleibt). Bitte also in der commandref nach allowed suchen!

Zitat von: Floriky am 12 Dezember 2018, 13:20:44
Noch eine Frage:

Ich hab hier ein Device das heißt "telnetForBlockingFn_1544616830". Muss ich hiermit was tun? HAbe nur den Wiki-Eintrag dazu gefunden (https://wiki.fhem.de/wiki/Blocking_Call) und kann mich nicht erinnern das mal angelegt zu haben. Das hat aber nichts mit dem Telnet zu tun, das ich laut "commandref" anlegen muss, oder?
Da bin ich nicht sicher, aber wenn du eine offene telnet-Verbindung hast, dürfte da - wie bei anderen Verbindungen auch - pro Verbindung ein temporäres Device auftauchen, das dann auch wieder verschwindet, wenn die Verbindung beendet wird.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Beta-User

Zitat von: Beta-User am 12 Dezember 2018, 12:54:22
[OT]
Wenn du als Linux-Spezialist eine Idee hast, wie man das eine oder andere von der Konsole aus erledigen kann, ohne telnet aktiviert zu haben, würde sich Otto123 vermutlich sehr freuen (z.B. wegen hier: https://wiki.fhem.de/wiki/Raspberry_Pi#Empfohlener_Patch)
Habe das nicht im Detail verfolgt, meine aber, dass das bisher nicht geklärt wurde, wie man das u.ä. zukünftig lösen kann, ohne ausgerechnet Noobs auf cfg-Editieren zu verweisen...).
[/OT]
Nachtrag dazu: Da (hoffentlich) ein Pi doch startet, wenn nix an USB hängt, habe ich wenigstens den Hinweis ins Wiki gepackt, dass man eben abstöpseln kann, um dann mit FHEMWEB arbeiten zu können...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Wernieman

#12
Nein .. das sie die Verbindungen für "non-Blocking-Module"

Telnet selber brauchst Du nicht für die telnet-Verbindung!, kannst Du also auch wieder deinstallieren (purgen). Eventuell brauchst Du aber netcat, in kurzform nc:
apt-get install netcat

Dann mal besser, damit geht nur die Zahl ins FHEM (ungetestet!):
#!/bin/bash
FHEM-Server="localhost"

ergebnis=$(snmpget -v2c -c GRUPPE 192.168.2.111 1.3.6.1.4.1.6574.3.1.1.5. | sed -e "s/^.*: //g")
echo -en "set snmp $ergebnis\nquit\n" | nc -w 5 $FHEM-Server 7072 >/dev/null


Hinweis:
Hier sind keine Fehlerroutinen eingebaut. Also auch wenn snmpget nicht funktioniert (z.B. Device nicht erreichbar), wird an FHEM Daten übergeben. Das wäre die Optimierung des Skriptes, welches eben hier nur rudimentär ist.

Edit:
Bin zwar beruflich ein Linux-Systemadmin und damit Konsolenbasiertes Editieren gewohnt, aber wie man ohne telnet-Device FHEM bearbeitet .....

Irgendwo hatte zwar jemand gepostet, wie man es über fhemweb (wget, curl) machen kann, nur ..... sehe ich wegen des Overhead für mehrfach laufenden Scripte da eher Nachteile
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Beta-User

Zitat von: Wernieman am 12 Dezember 2018, 13:43:21
Irgendwo hatte zwar jemand gepostet, wie man es über fhemweb (wget, curl) machen kann, nur ..... sehe ich wegen des Overhead für mehrfach laufenden Scripte da eher Nachteile
Danke für die Rückmeldung. Ohne das im Detail bewerten zu können empfinde ich den Umweg auch als nicht empfehlenswert. Ging v.a. um diese Einsteiger-Hürde mit initialUsbCheck.

Wer mehr scripting braucht, sollte telnet aktivieren und entsprechend absichern, das ist m.E. die einfachste Variante.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Wernieman

Bezüglich Absicherung steht sogar einiges in der CommandRef

Und wenn man dann SSL + Passwort aktiviert hat, einfach eine Zeile umschreiben in:
echo -en "${Passwort\n}${Befehl}\nquit\n" | /usr/bin/ncat -w5 -4 --ssl ${FHEM-Server} 7073

Sende so Daten von "externen"-Systemen zum FHEM-Server (Mag Push lieber als Pull)

Mit "externen" meine ich Sensoren im gleichen Netz, aber nicht im I-Netz
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html