NEWS
Test Adapter Linux Control v1.x.x
-
@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
-
@haumichel sagte in Test Adapter Linux Control v1.x.x:
response error: ash:
Liegt es vielleicht daran, dass "docker stats" eine dynamische anzeige als Antwort liefert?
Und wie bekomme ich es hin, dass ich die Antwort von z. B.root@DiskStation:~# docker stats pihole | awk 'NR==2 {print $3}' 0.23%
als einfachen Wert zurückbekomme?
edit:
Auch der Befehldocker stats pihole --no-stream | awk 'NR==2 {print $3}'
gibt eine Fehlermeldung zurück
2021-07-07 13:42:21.457 - error: linux-control.0 (8522) [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
VIelen Dank
-
@haumichel sagte in Test Adapter Linux Control v1.x.x:
sshd_config so verändert, dass ich mich mit root direkt an der Konsole anmelden kann.
Macht man nicht. Nutze Standarduser.
-
@thomas-braun
Hallo Thomas,
trotz meiner doch sehr begrenzten Computerkenntnisse, habe ich genau das schon gewusst. Den User benutze ich momentan um einzelne Befehle zu testen. Das Problem aus meinem vorigen Thread bestand ja darin, dass ich die zusätzliche Passwortabfrage bei Eingabe von sudo umgehen will. Die DS scheint sudo -S nicht zu unterstützen.
Später soll, wenn ich keine andere Lösung finde, dieser User nur für fest verdrahtete Befehle aus dem Adapter genutzt werden.
Trotzdem Danke für den Hinweis. -
@haumichel
Dann ist es ja noch weniger sinnvoll als ohnehin schon da mit einer root shell zu agieren.Aber auf einer nur DS mit dem ganz rudimentären Linux da drauf ist das eh so eine Sache.
-
@thomas-braun
Natürlich ist das nicht sonderlich sinnvoll.
Anstatt aber nur meine Fehler und mein Unwissen herauszustellen, könntest du mir ja kurz erklären wie ich es besser machen könnte.
Ich hätte auch versuchen können die Datei sudoers zu editieren. Die Gefahr mein ganzes System damit zu zerstören war mir aber zu groß, bin halt nen ziemlicher Noob.
Und ob das nun "eh nur so eine Sache" ist mit dem rudimentären Linux auf der DS, ist mir relativ egal. ich möchte das irgendwie hinbekommen und dabei lernen.
Heute habe ich z. B schon gelernt, dass die DS nur ein rudimentäres Linux hat und das es noch sinnloser als sinnlos sein kann mit einem root-Account zu agieren. -
@haumichel rudimentäres Linux auf der DS ist noch ein hilfsausdruck. das ding ist mächtig verbogen... hab da auch schon meine erfahrungen machen "dürfen"
-
@haumichel sagte in Test Adapter Linux Control v1.x.x:
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
Das sagt erstmal nur das der befehl nicht gefunden wird. Versuch es mal mit dem absoluten pfad.
Also sofern es den befehl gibtwhereis docker
ausführen und dann den pfad mit im Befehl angeben. -
root@DiskStation:~# whereis docker -ash: whereis: command not found root@DiskStation:~#
Scheint es nicht zu geben.
Warum gibt es den Befehl wenn ich mich als root per Terminal einlogge? Wenn sich der Adapter einloggt gibt es ihn aber nicht. Da scheint es in meinem Kopf einen weißen Fleck zu geben.
Was passiert im Hintergrund wenn ich dem Adapter unter Allgemein den Root-Zugang mitgebe? -
@haumichel sagte in Test Adapter Linux Control v1.x.x:
Warum gibt es den Befehl wenn ich mich als root per Terminal einlogge? Wenn sich der Adapter einloggt gibt es ihn aber nicht. Da scheint es in meinem Kopf einen weißen Fleck zu geben.
Wo ist der docker installiert? wen z.b. unter /etc/docker/ liegt, dann versuch mal bei dem befehl im adapter
/etc/docker/docker ....
Was passiert im Hintergrund wenn ich dem Adapter unter Allgemein den Root-Zugang mitgebe?
Einfach gesagt verwendet der einen ssh zugang, details siehe verwendete Library:
https://github.com/steelbrain/node-ssh#readmeMit "vernüftigen" Linux Dist funktioniert das auch alles super
-
@scrounger
Super, vielen Dank für den Schubs in die richtige Richtung.
Mit diesem Befehl im Adapter klappt es nun./usr/local/bin/docker stats --no-stream | awk 'NR==2 {print $7}'
-
Ich betreibe auf einem Mini-PC nun Proxmox.
Hätte die Daten in Linux-Control eingetragen und alle Datenpunkte aktiviert.
Mir wird aber zB
.needrestart.needrestart
nicht angezeigt.
Behauptet auch dass Proxmox nicht online ist, was nicht stimmt.Ich sehe nur die paar DP .
Muss in diesem Fall noch was konfiguriert werden?
Admin ist 5.1.9
JS-Controller ist 3.3.14 -
Needrestart Paket musst du installieren.
Bzgl das er nicht online ist, IP utils auf dem iobroker und Client neu installieren. -
Hallo und danke für diesen tollen Adapter!
Eine Frage, kann ich irgendwo sehen welche Befehle über linuxcontrol per ssh an einen angelegten Host gesendet werden?
Ich konnte auch mit der Suche nicht fündig werden.Mfg
DavidHat sich erledigt. Adapter auf Debug und dann per
Iobroker-vm:~# grep "linux-control" /opt/iobroker/log/iobroker.2021-08-19.log
Commands gesichtet.