Geschäftlich arbeite ich mit PRTG um unsere ICT-Umgebung zu überwachen. Leider ist das PRTG Core-System Windows basierend und somit kann ich es zu Hause (vorerst) nicht einsetzen. Pi Control wurde von Willy Fritzsche entwickelt und bietet einen gelungenen Überblick über den Zustand des Raspberry Pi.
Natürlich kann man Pi Control nicht mit den Grossen wie PRTG oder Nagios vergleichen, da es nur den Zustand des aktuellen Rechners anzeigt und dennoch reicht das meistens aus um sich schnell über den aktuellen Zustand seines Raspberry Pi zu informieren.
Vielleicht kriegt man ja PRTG, da Windows basierend, auf einem Raspberry Pi mit Windows 10 IoT zum laufen... Das wird sicher ein spannendes, zukünftiges Projekt.
Wie kriegt man eine Applikation auf einem Gerät zum laufen, die nicht für dieses Gerät/OS geschrieben wurde? Ganz einfach, man betreibt Engineering, schummelt ein wenig und darf sich nicht ärgern weil nicht alles 100%ig funktioniert ;-)
Bei mir läuft LIGHTTPD als Webserver, leider habe ich mich nicht darauf geachtet ob dieser vorinstalliert war, z.B. durch ein anderes Programm, oder ob er durch Pi Control installiert wurde. Aus vergangenen Installationen weiss ich jedoch, dass Pi Control bei der Installation Vorschläge zu verschiedene Webserver wie NGIX, LIGHTTPD usw. macht.
Pi Control kann man hier herunterlagen oder mit diesem Befehl herunterladen und starten:
curl https://pi-control.de/pic_installer | sudo bash
Die aufkommenden Fragen habe ich so beantwortet j - j - j - 2 - pic - j
dabei wird bei der dritten Frage bereits auf eine Herausforderung hingedeutet:
Auch dies deutet darauf hin, dass es Problemchen geben könnte, hier müsste die IP-Adresse stehen:
Den Browser deines Vertrauens öffnen und weiter geht's, sieht schon mal gut aus:
Wähle die Sprache der du meinst mächtig zu sein:
~ Da waren sie wieder, meine drei Probleme ~ (Zitat aus "Otto der Film")
Der Schlüssel zum (vermeidlichen) Glück befindet sich in dieser Datei /var/www/html/pic/install/resources/Content/install_requirement.php
Zeile 65:if ($otherDistribution['version'] == 'Raspbian GNU/Linux 7' || $otherDistribution['version'] == 'Raspbian GNU/Linux 8' || $otherDistribution['version'] == 'Raspbian GNU/Linux 9')
ersetzen durch:if ($otherDistribution['version'] == 'Raspbian GNU/Linux 7' || $otherDistribution['version'] == 'Raspbian GNU/Linux 8' || $otherDistribution['version'] == 'Raspbian GNU/Linux 9' || $otherDistribution['version'] == 'Raspbian GNU/Linux 10')
Da waren's nur noch zwei...
Leider funktionieren die im Programm angebotenen Problemlösungen nicht unter Rasbian 10 (buster). PHP5-CLI kann nicht unter "buster" installiert werden...
... da bereits auf PHP7.3-cli referenziert wird (kann man mit diesem Befehl kontrollieren: dpkg-query -l)
Nun bearbeiten wir die Zeile 31 von:if (trim(exec('dpkg -s php5-cli | grep Status: ')) != '' || trim(exec('dpkg -s php7.0-cli | grep Status: ')) != '')
auf:if (trim(exec('dpkg -s php7.3-cli | grep Status: ')) != '' || trim(exec('dpkg -s php7.3-cli | grep Status: ')) != '')
Nun noch das letzte Problem lösen...
... leider habe ich keine wirkliche Lösung im Web gefunden und habe hier so richtig geschummelt in dem ich das Script regelrecht manipuliert habe.
Zeile 28 angepasst von:if (function_exists('mcrypt_encrypt') !== false)
auf:if (function_exists('mcrypt_encrypt') !== true)
und das Ergebnis sieht schon mal nicht so schlecht aus:
Als nächstes muss ein Benutzer für die Anmeldung an der Webseite erstellt werden:
Nun muss der Admin des Raspberry Pi hinterlegt werden, damit per SSH ein Cronjob angelegt wird:
Nun können wir uns schon mal anmelden, damit wir...
... mit Schrecken sehen müssen, dass etwas nicht geklappt hat:
Obwohl der Cronjob * * * * * www-data php -f "/var/www/html/pic/resources/cron/init.php" >/dev/null 2>&1 # By Pi Control
korrekt angelegt wurde, scheint etwas nicht richtig zu funktionieren. Beim betrachten der Datei /var/www/html/pic/resources/cron/init.php
ist mir aufgefallen, dass darin wieder PHP5-CLI vorkommt.
Zeile 34 angepasst von:if (trim(exec('dpkg -s php5-cli | grep Status: ')) != '' || trim(exec('dpkg -s php7.0-cli | grep Status: ')) != '')
auf:if (trim(exec('dpkg -s php7.3-cli | grep Status: ')) != '' || trim(exec('dpkg -s php7.3-cli | grep Status: ')) != '')
und schon ist auch dieses Problem behoben:
Das ganze hat jedoch einen Schönheits- / Funktions-Fehler! Will man die Funktion Terminal oder das Plugin Cron benutzen und will sich mit dem RasPi-Admin für SSH anmelden...
... wird man mit diesem Output beschenkt:
Dies hat mit Sicherheit mit der PHP-Funktion mcrypt_encrypt etwas zu tun, welche ich bei der Installation "ausgetrickst" habe. Leider habe ich noch keine Lösung dazu gefunden ausser dass diese Funktion veraltet ist und eigentlich nicht mehr eingesetzt werden sollte.
Bitte schau später wieder vorbei, vielleicht finde ich eine Lösung zu diesem Problem oder es wird ein Programm Update des Herstellers angeboten.