NEWS
Test Adapter Linux Control v1.x.x
-
Hallo zusammen,
ich möchte mit diesem Adapter auf meinem PiHole eine DB Abfrage starten um sie dann im ioBroker weiter zu verarbeiten.
Ich kriege es aber nicht hin, die folgende Abfrage im Adapter zum Laufen zu kriegen:sqlite3 /etc/pihole/pihole-FTL.db "SELECT domain FROM queries WHERE timestamp BETWEEN strftime('%s','now','-1 day','start of day') and strftime ('%s','now','start of day') GROUP BY domain ORDER BY count(domain) DESC LIMIT 1;"
Die Abfrage funktioniert auf dem PiHole gut. Wenn ich sie allerdings im Adapter unter "meine Befehle" eintrage, passiert entweder gar nichts oder es gibt Fehlermeldungen im Log.
Der Datenpunkt unter Objects bleibt auf jeden Fall immer leer.
Was genau muss ich tun um die auf der Konsole ausgegbene Webseite in den entsprechenden Datenpunkt zu bekommen?
Vielen Dank
-
@haumichel
Versuch Mal die ' und " zu escapen -
@scrounger
Was genau bedeutet escapen? -
Hallo
Ich möchte mit dem Adapter einen Raspberry 4 herunterfahren.
Der DP dazu wurde mir angelegt.
User & PWD sind im Adapter eingetragen.Betätige ich den Button, bekomm ich folgende Fehlermeldung.
2021-05-16 18:58:19.437 - [32minfo[39m: linux-control.0 (15297) state linux-control.0.Octoprint.control.shutdown changed: true (ack = false) 2021-05-16 18:58:19.873 - [31merror[39m: linux-control.0 (15297) [cmdShutdown] Octoprint (10.0.1.182:22): response error: bash: shutdown: Kommando nicht gefunden., stack: ResponseError: [cmdShutdown] Octoprint (10.0.1.182:22): bash: shutdown: Kommando nicht gefunden. at LinuxControl.sendCommand (/opt/iobroker/node_modules/iobroker.linux-control/main.js:874:26) at processTicksAndRejections (internal/process/task_queues.js:97:5) at LinuxControl.cmdShutdown (/opt/iobroker/node_modules/iobroker.linux-control/main.js:634:5) at LinuxControl.onStateChange (/opt/iobroker/node_modules/iobroker.linux-control/main.js:1092:8)
Was muss ich machen, damit das funktioniert?
Danke
-
@negalein
Shutdown geht meines Wissen nach nur als Riot oder mit sudo. -
@scrounger sagte in Test Adapter Linux Control v1.x.x:
Shutdown geht meines Wissen nach nur als Riot oder mit sudo.
Ja, das stimmt.
Muss ich das im Adapter dann anders konfigurieren? -
@negalein
Ja beim Host den Haken bei sudo setzen. Verwendeter User muss sudo nutzen können. -
@scrounger sagte in Test Adapter Linux Control v1.x.x:
Ja beim Host den Haken bei sudo setzen. Verwendeter User muss sudo nutzen können.
Cool, danke, funktioniert.
Jetzt kann ich den Raspi sehr einfach übers Blockly gür Octoprint herunterfahren.
-
@haumichel sagte in Test Adapter Linux Control v1.x.x:
Hallo zusammen,
ich möchte mit diesem Adapter auf meinem PiHole eine DB Abfrage starten um sie dann im ioBroker weiter zu verarbeiten.
Ich kriege es aber nicht hin, die folgende Abfrage im Adapter zum Laufen zu kriegen:sqlite3 /etc/pihole/pihole-FTL.db "SELECT domain FROM queries WHERE timestamp BETWEEN strftime('%s','now','-1 day','start of day') and strftime ('%s','now','start of day') GROUP BY domain ORDER BY count(domain) DESC LIMIT 1;"
Die Abfrage funktioniert auf dem PiHole gut. Wenn ich sie allerdings im Adapter unter "meine Befehle" eintrage, passiert entweder gar nichts oder es gibt Fehlermeldungen im Log.
Der Datenpunkt unter Objects bleibt auf jeden Fall immer leer.
Was genau muss ich tun um die auf der Konsole ausgegbene Webseite in den entsprechenden Datenpunkt zu bekommen?
Vielen Dank
Hallo zusammen,
die Abfrage läuft nun schon seit Monaten sehr stabil. Dafür schon mal vielen Dank.
Nun möchte ich mein PiHole in einem Container auf der DiskStation laufen lassen und komm da dann nicht mehr so einfach per ssh ran. Wenn ich die Abfrage manuell über das Terminal eingebe funktioniert es. Ich weiß aber nicht wie ich diesen Befehl, der zweimal eine Passworteingabe erfordert, über den Adapter absetzen kann.
Hier ist mal die komplette manuelle Ein- und Ausgabe:Mac:~ noname$ ssh Admin@192.168.178.5 Admin@192.168.178.5's password: Admin@DiskStation:~$ sudo docker exec -it pihole sqlite3 /etc/pihole/pihole-FTL.db "SELECT domain,count(domain) FROM queries WHERE timestamp BETWEEN strftime('%s','now','-1 day','start of day') and strftime ('%s','now','start of day') GROUP BY domain ORDER BY count(domain) DESC LIMIT 3;" Password: msg.volkswagen.de|1828 api-global.netflix.com|747 lcprd1.samsungcloudsolution.net|360 Admin@DiskStation:~$
Das Passwort wird das erste mal bei Anmeldung an der DiskStation, das zweite mal beim Abschicken der Abfrage angefordert.
Wie kann ich das über den Adapter realisieren?Vielen Dank.
-
@haumichel
Anstatt sudo musst du sudo -S in dem Befehl verwenden -
@scrounger
Hallo scrounger,
das hat leider nicht funktioniert. Es kommt, auch bei Eingabe von sudo -S noch die Passwortabfrage.
Ich weiß auch nicht, wie ich die erste Anmeldung an der DiskStation in den Befehl einbaue. Eigentlich bin ich ein ziemlicher Noob....DiskAdmin@DiskStation:~$ sudo -S docker exec -it pihole sqlite3 /etc/pihole/pihole-FTL.db "SELECT domain,count(domain) FROM queries WHERE timestamp BETWEEN strftime('%s','now','-1 day','start of day') and strftime ('%s','now','start of day') GROUP BY domain ORDER BY count(domain) DESC LIMIT 3;" Password:
Vielen Dank
-
sudo -S Passwort Befehl
-
@thomas-braun
Hallo Thomas,
das hat leider auch nicht fuktioniert.Admin@DiskStation:~$ sudo -S meinpasswort docker exec -it pihole sqlite3 /etc/pihole/pihole-FTL.db "SELECT domain,count(domain) FROM queries WHERE timestamp BETWEEN strftime('%s','now','-1 day','start of day') and strftime ('%s','now','start of day') GROUP BY domain ORDER BY count(domain) DESC LIMIT 3;" Password: sudo: meinpasswort: command not found Admin@DiskStation:~$
Die Passwortabfrage kommt trotzdem. Wenn ich es dann eingebe, wird es nicht angenommen.
-
@haumichel
Erklär doch mal bitte genau was du machen möchtest.Du hast die Diskstation, auf der läuft PiHole im Docker container?
Warum ist der Docker container nicht im netzwerk erreichbar bzw. du musst wahrscheinlich für den docker den ssh zugriff freigeben?Du willst unter meine Befehle als z.B. button per Linux Control Adapter den Befehl
sudo docker exec -it pihole sqlite3 /etc/pihole/pihole-FTL.db "SELECT domain,count(domain) FROM queries WHERE timestamp BETWEEN strftime('%s','now','-1 day','start of day') and strftime ('%s','now','start of day') GROUP BY domain ORDER BY count(domain) DESC LIMIT 3;"
abstezen?
-
@scrounger
Also.
Bisher lief das PiHole auf einem Raspberry mit eigener IP bei mir im Netzwerk. Ich habe über den Adapter folgenden Befehl ausgeführt und das Ergebnis in einen DP geschrieben.sqlite3 /etc/pihole/pihole-FTL.db "SELECT domain,count(domain) FROM queries WHERE timestamp BETWEEN strftime('%s','now','-1 day','start of day') and strftime ('%s','now','start of day') GROUP BY domain ORDER BY count(domain) DESC LIMIT 3;"
Das hat sehr gut funktioniert.
Jetzt läuft das PiHole auf der Synology Diskstation im Dockercontainer im Host Netz. Das Pihole ist über die IP-Adresse der DS erreichbar. Als DNS-Server im Netzwerk funktioniert das auch sehr gut. Einzig die Abfrage vom Adapter funktioniert nicht mehr.
Um mich via Terminal am PiHole anzumelden muss ich erst eine ssh Verbindung zur DS aufbauenMac:~ noname$ ssh Admin@192.168.178.5 Admin@192.168.178.5's password: Admin@DiskStation:~$
um dann per docker exec befehl z.B. die Abfrage absetzen zu können.
Admin@DiskStation:~$ sudo docker exec -it pihole sqlite3 /etc/pihole/pihole-FTL.db "SELECT domain,count(domain) FROM queries WHERE timestamp BETWEEN strftime('%s','now','-1 day','start of day') and strftime ('%s','now','start of day') GROUP BY domain ORDER BY count(domain) DESC LIMIT 3;" Password: msg.volkswagen.de|1828 api-global.netflix.com|747 lcprd1.samsungcloudsolution.net|360 Admin@DiskStation:~$
Wie gesagt, im Terminal klappt das, ich muss aber 2 mal manuell das Passwort eingeben.
Ich weiß nicht wie ich das alles in einem Befehl verpacken kann, der dann via Adapter/meine Befehle losgeschickt wird. Die Abfrage läuft Zeitgesteuert einamal am Tag.Vielen Dank
-
Gehe ich richtig in der Annahme das das Passwort das gleiche ist?
Dann müsste es mit sudo -S gehen. Erstell mal unter meine Befehle einen Button, der dann deinen befehl mit sudo -S ausführt. Beim host den haken bei nutze sudo setzen.Wenn es nicht geht, mal den adapter auf debug stellen, den Button drücken und danach das vollständige log posten, dann sieht man was der Adapter als antwort bekommt bzw. überhaupt macht.
-
@scrounger
Ja, das Passwort ist das gleiche.
Ich habe einen neuen Host erstellt, IP von der DS, Benutzer und Passwort vom DS-Admin, Sudo nutzen ist angehakt.
Unter meine Befehle habe ich folgenden Befehl verwendet und als Button getriggert:sudo -S meinpasswort docker exec -it pihole sqlite3 /etc/pihole/pihole-FTL.db "SELECT domain,count(domain) FROM queries WHERE timestamp BETWEEN strftime('%s','now','-1 day','start of day') and strftime ('%s','now','start of day') GROUP BY domain ORDER BY count(domain) DESC LIMIT 3;"
Beim Klick auf den Button wird folgendes ins Log geschrieben:
linux-control.0 2021-07-06 07:49:19.543 info (2833) successful received data from PiHoleDS (192.168.178.5:22) linux-control.0 2021-07-06 07:49:19.385 info (2833) getting data from PiHoleDS (192.168.178.5:22) linux-control.0 2021-07-06 07:49:19.383 info (2833) state linux-control.0.PiHoleDS.refresh changed: true (ack = false)
Im DP ist dieses hier zu finden:
Password: sudo: meinpasswort: command not found
-
@haumichel
Adapter auf debug stellen! Und dann nochmal das Log Posten.
Und meinpasswort nicht mit in den Befehl nur sudo -S, der Adapter setzt dann das Passwort wenn er gefragt wird. -
@scrounger
Hat leider auch nicht funktioniert.
Das Log hat keinen Fehler gezeigt, im DP allerdings stand, dass docker ein unknown command sei.
Ich denke, eine Lösung gefunden zu haben.
Da ich das pihole-Verzeichnis eh schon aus dem Container auf die DS "rausgemountet" habe, habe ich die Abfrage jetzt mal mit diesem Befehl direkt auf der DS versucht:
sqlite3 /volume1/08\ Docker/pihole/pihole/pihole-FTL.db "SELECT domain,count(domain) FROM queries WHERE timestamp BETWEEN strftime('%s','now','-1 day','start of day') and strftime ('%s','now','start of day') GROUP BY domain ORDER BY count(domain) DESC LIMIT 4;"
Das scheint zu funktionieren. Der DP enthält nun Folgendes:
safebrowsing.googleapis.com|53 iobroker.fritz.box|44 e673.dsce9.akamaiedge.net|29 play.google.com|27
Vielen Dank für die Hilfe
-
Hello again,
ich habe schon wieder eine Frage.
Als Nächstes möchte ich versuchen, den Speicherverbrauch und die CPU Nutzung des PiHole-Dockercontainers zu ermitteln. Dazu habe ich, um den Problemen aus meinem vorigen Post aus dem Weg zu gehen, die Datei sshd_config so verändert, dass ich mich mit root direkt an der Konsole anmelden kann.
Im Terminal meines Macs gebe ich also nun Folgendes ein:Mac:~ noname$ ssh root@192.168.178.5
Nach Eingabe des Passworts komme dann direkt zu dieser Eingabeaufforderung:
root@192.168.178.5's password: root@DiskStation:~#
Nach Eingabe von
root@DiskStation:~# docker stats pihole
sehe ich diese Übersicht
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS f679d6e90ff6 pihole 0.04% 57.22MiB / 2GiB 2.79% 0B / 0B 0B / 0B 0
Im Adapter unter Allgemein habe ich jetzt direkt den root-Zugang eingetragen, "benutze Sudo" ist nicht angehakt.
Unter "meine Befehle" habe ich genau den Befehl (docker stats pihole), den ich auch im Terminal verwende, eingetragen und bekomme im Log folgende Fehlermeldung:2021-07-07 12:48:54.324 - error: linux-control.0 (32235) [userCommandExecute] PiHole (192.168.178.5:22, id: docker_stats, description: Docker Status): response error: ash: docker: command not found, stack: ResponseError: [userCommandExecute] PiHole (192.168.178.5:22, id: docker_stats, description: Docker Status): ash: docker: command not found
Was mache ich nun schon wieder falsch?
Vielen Dank