Normale Ansicht

Es gibt neue verfügbare Artikel. Klicken Sie, um die Seite zu aktualisieren.
Ältere BeiträgeBlogs

pfSense automatisieren mit pfSsh.php

Von: zefanja
28. November 2018 um 13:29

pfSense hat seit einigen Versionen eine völlig überarbeitete Oberfläche. Damit lassen sich alle Einstellungen i.d.R. gut erreichen und einstellen. Das frei konfigurierbare Dashboard ist ebenfalls eine feine Sache. Trotz allem gibt es manchmal den Fall, dass man Einstellungen gern über eine API oder die Kommandozeile vornehmen möchte. pfSense hat aktuell keine API, diese soll erst in einer der kommenden Versionen integriert werden. Bis dahin kann man sich über die pfSense Entwickler-Shell behelfen, auch pfSsh.php genannt.

Auf pfSsh.php zugreifen

Am schnellsten kommt man in die Entwickler-Shell, wenn man sich per SSH mit pfSense verbindet oder direkt einen Bildschirm an die Firewall anschließt. Wenn SSH noch nicht aktiviert ist, kann man das in der Weboberfläche unter System → Advanced nachholen.

pfSense SSH aktivieren

Besser ist es, wenn man das Einloggen mit Passwort verbietet und nur das Anmelden mit Zertifikat erlaubt.

Ist der SSH-Zugang aktivert, kann man sich nun mit dem Admin-Benutzer anmelden (IP anpassen):

$ ssh admin@192.168.1.254

pfSense CLI

Unter Punkt 12 findet man die Entwickler-Shell, die im Grunde eine PHP-Shell ist.

Beispielbefehle für pfSsh.php

Hier einige Beispielbefehle, die zeigen sollen, wie man die Shell verwenden kann. Jede Eingabe ist normaler PHP Code und muss mit exec; abgeschlossen werden.

DHCP Einstellungen anzeigen

pfSense shell: print_r($config["dhcpd"]);
pfSense shell: exec;
Array
(
    [lan] => Array
        (
            [range] => Array
                (
                    [from] => 10.0.1.7
                    [to] => 10.0.255.245
                )

        )

)

Domain festlegen

pfSense shell: $config['system']['domain'] = 'mydomain.com';
pfSense shell: write_config();
pfSense shell: exec;

Shell – Befehle ausführen

Innerhalb der PHP Shell kann man auch normale Shell-Befehle ausführen, indem man ein „!“ davor setzt:

pfSense shell: ! cat /etc/version 
pfSense shell: exec;
2.4.3-RELEASE

Befehle „aufnehmen“ und „abspielen“

Mit pfSsh.php kann man auch mehrere Befehle „aufnehmen“ und später „abspielen“. Diese sogenannten Sessions sind für wiederkehrende Aufgaben nützlich. Ein Beispiel:

pfSense shell: record echoTest
Recording of echoTest started.
pfSense shell: echo "Das\n";
pfSense shell: echo "ist\n";
pfSense shell: echo "ein\n";
pfSense shell: ! echo "Test\n"
pfSense shell: exec;
pfSense shell: stoprecording 
Recording stopped.

Die Eingaben werden unter /etc/phpshellsessions/ gespeichert und können dort bei Bedarf verändert werden.

Die „Aufnahme“ kann man nun wie folgt wiedergeben:

pfSense shell: playback echoTest

Playback of file echoTest started.

Das
ist
ein
Test

pfSense shell:

oder auch direkt von der root-Shell mit:

$ pfSsh.php playback echoTest

Fazit

pfSsh.php ist ein nützliches Werkzeug, um pfSense mit Skripten zu automatisieren oder Anpassungen vorzunehmen. Gerade, wenn man mehrere Instanzen verwaltet oder ein bestimmtes Setup immer wieder braucht, ist pfSsh.php eine große Hilfe. Man kann z.B. alle Einstellung (sprich PHP-Code) in eine Datei packen, unter /etc/phpshellsessions/ speichern und dann ausführen oder direkt die Ausgabe an pfSsh.php weiterleiten:

$ ssh admin@192.168.1.254 '/usr/local/sbin/pfSsh.php' < MeineConfig.txt

 

2 Kommentare

Der Beitrag pfSense automatisieren mit pfSsh.php erschien zuerst auf .:zefanjas:..

macOS: SSH Hosts mit Autovervollständigung aufrufen

01. Oktober 2019 um 10:37

Es gibt unter macOS Mojave keine Autovervollständigung der definierten Hosts aus der Datei ~/.ssh/config. Hierzu habe ich in die Datei ~/.bash_profile folgende Funktion eingetragen : Nun reicht wieder ein ssh TAB in der Konsole um die einzelnen Hosts und der … Weiterlesen

Der Beitrag macOS: SSH Hosts mit Autovervollständigung aufrufen erschien zuerst auf Got tty.

Die augenschonende Schriftart für das Arbeiten mit Code und Shell

09. November 2019 um 15:09

Meine Empfehlung für das kommende Jahr doch einmal die Schriftart zu ändern und eine neue für die Konsole und das Programmieren zu nutzen. Die Schriftart Hack lässt sich in jeder Größe sehr leicht lesen. Ein Blick auf die Proben sollte … Weiterlesen

Der Beitrag Die augenschonende Schriftart für das Arbeiten mit Code und Shell erschien zuerst auf Got tty.

Shell Helligkeit des externen Monitors steuern

02. April 2021 um 08:34

Aufstehen, die gut versteckten Taster suchen, Einstellen, hinsetzen. Das gilt auch für meinen externen Monitor, welchen ich öfters wegen der Sonneneinstrahlung anpassen muss. Hier hilft mir xrandr in der Shell. Zuerst muss ich den richtigen angeschlossen Monitor finden und kann dann über Parameter die gewünschte Helligkeit einstellen. Bei Nutzung als Tastaturkürzel in TilingWMs eine große ... Weiterlesen

Der Beitrag Shell Helligkeit des externen Monitors steuern erschien zuerst auf Got tty.

Big Sur Homebrew xcrun: error: invalid active developer path

08. April 2021 um 08:18

Bei meinem letzten Update von Homebrew unter macOS Big Sur hatte ich die Fehlermeldung, dass es eine ungültigen Pfadangabe für die Entwicklerwerkzeuge gäbe. Da ich nur die Kommandozeilenwerkzeuge für macOS nutze wird diese nicht einem Update unterzogen. Bei einer kompletten Installation von Xcode würde dies automatisch geschehen. Um das Update selbst anzustoßen genügt ein:

Der Beitrag Big Sur Homebrew xcrun: error: invalid active developer path erschien zuerst auf Got tty.

Programmieren im Zeitalter von ChatGPT

02. März 2023 um 17:55

ChatGPT ist in aller Munde. Es formuliert in flüssigem Deutsch oder Englisch Hausaufgaben, löst Philosophie-Wiederholungsfragen und fügt bei Bedarf frei erfundene Quellen hinzu, damit der Text seriöser/wissenschaftlicher wirkt. Wenn man das Programm hinweist, dass 2+3 keineswegs 5 ist, entschuldigt es sich höflich für seinen Fehler. Kurzum, Bananen-Software, reift beim Anwender? Ich bin nicht dieser Meinung.

Trotz aller Unzulänglichkeiten schätze ich das Programm mittlerweile so sehr, dass ich bereit wäre, für seine Anwendung zu zahlen. Bisher war das nicht notwendig. Mit ein paar Versuchen ist mir der Login noch jedes Mal gelungen, auch bei angeblich unerwartet hoher Auslastung.

Nun zähle ich nicht zu den Twitter- oder YouTube-Enthusiasten, die Ihnen versprechen, mit ChatGPT 10 x produktiver zu arbeiten oder 10.000 EUR pro Monat extra zu verdienen. Blödsinn! Aber ich bin mittlerweile überzeugt, dass mir ChatGPT mehr Zeit erspart, als ich brauche, um die ca. 23 EUR zu verdienen, die ChatGPT Plus aktuell pro Monat kostet. Und ich bin schon sehr gespannt, welche KI-Tools als Nächstes kommen!

ChatGPT unterstützt mich beim Programmieren

Berufsbedingt wechsle ich zwischen rund einem Dutzend Sprachen hin und her. Manche Sprachen brauche ich beinahe täglich oder zumindest wöchentlich, bei anderen vergehen schon mal etliche Monate von der einen Anwendung zu nächsten. Das bringt es mit sich, dass ich mir einfach nicht auswendig merken kann, wie ich die letzten drei Zeichen einer Zeichenkette in einem SQL-Statement, in der PowerShell oder in Java extrahiere. Wie ich einen regulären Ausdruck in PHP anwende, und welche Funktionen dagegen in Python verwendet werden.

Solange ich nicht in meinen eigenen Büchern nachschauen kann (deren Aufbau kenne ich so gut, dass die Suchzeit gegen Null geht), habe ich mir derartige Fragen bisher meist von Google beantworten lassen. Google führt dann in die Dokumentation der jeweiligen Sprache oder (bevorzugt) auf einen Beitrag von StackOverflow. Und natürlich weiß ich, welche Seiten am ehesten zum Ziel führen. Dessen ungeachtet dauert es üblicherweise ein paar Minuten, um das im Internet präsentierte Wissen auf die eigene Fragestellung anzuwenden, die Streu eines langatmigen Blog-Beitrags vom Weizen zu trennen. (Mit Videos habe ich mich dagegen nie recht anfreunden können. Es dauert einfach viel zu lange, um an die Stelle zu kommen, wo es interessant wird.)

In den letzten zwei Monaten ist die Anzahl meiner Google-Programmier-Suchen stark gesunken. ChatGPT kann auch programmieren! Warum soll ich umständlich nach Details suchen, wenn ChatGPT innerhalb von Sekunden Code liefert, der nicht nur für die ganz spezifische Fragestellung funktioniert, sondern den die KI auch noch erläutert?

Beispiele

Ein Bild sagt mehr als 1000 Worte? Nun denn:

Wie kann ich in einem PHP-Programm das Bearer Token eines GET-Requests ermitteln?
Vor kurzem habe ich einen regulären Ausdruck gebraucht, um ein Datum im US-Format (also mm/dd/yyyy) zu erkennen.
Hier geht es nur um einen Vorschlag für die Struktur (das Grundgerüst) eines Scripts. Um die Details kümmere ich mich dann selbst, d.h. ich mache das wofür ich bezahlt werde, aber verschwende keine Zeit an Trivialitäten.
Ich will in einem Python-Script eine Datei herunterladen, aber ohne Zusatzmodule zu verwenden.
In einer Folgefrage suche ich nach einem Weg, beim GET-Request einen eigenen Header anzugeben. ChatGPT antwortet im Kontext der vorigen Frage.
In einem Bash-Script will ich die Kennung einer Datei auslesen.
ChatGPT kennt auch Kotlin samt der Datenbankbibliothek Exposed. Die Antwort schießt ein wenig über das Ziel hinaus und enthält auch Code, um eine neue Tabelle einzurichten.
Extrem cool: Ich habe Code in einer Sprache (hier in der Bash) und brauche äquivalenten Code in einer anderen Sprache (hier für die PowerShell). Kein Problem für ChatGPT.
Hier hilft ChatGPT bei der Formatierung von Bildern in einem Markdown-Dokument, das mit Pandoc verarbeitet wird. ChatGPT weist auf die Pandoc-spezifische Erweiterung der Markdown-Syntax hin.
ChatGPT hilft auch bei der Linux-Administration. Hier geht es darum, mit »tar« ein inkrementelles Backup zu erstellen.

ChatGPT versus Copilot

Aus Sicht von Entwicklern ist der GitHub Copilot ein kostenpflichtiges Konkurrenzprodukt zu ChatGPT. Der Copilot soll die Code-Erstellung in Editoren wie VSCode beschleunigen. Im Prinzip geben Sie einen möglichst aussagekräftigen Funktions- oder Methodennamen an, und der Copilot schlägt dafür fertigen Code vor. Die Code-Schnipsel kommen aus dem riesigen Angebot öffentlicher Git-Repositories.

Auch der Copilot nutzt KI-Technik bei der Auswahl und Adaptierung von Code-Schnipsel. Copyright-technisch ist das bedenklicher als die Vorgehensweise von ChatGPT, die in der Regel Code wirklich neu generiert. Natürlich kann es passieren, dass der Copilot Code vorschlägt, der bekannte Fehler oder gar Sicherheitslücken enthält. Das sind aber Probleme, die auch bei ChatGPT auftreten können. Letztlich bleibt es die Verantwortung des Entwicklers / der Entwicklerin, den Code zu verstehen und zu entscheiden, ob er für das Problem taugt oder nicht.

Für mich liegt der wesentliche Unterschied zwischen ChatGPT und dem Copilot weniger im produzierten Code als in der Bedienung: Mit ChatGPT kann ich gewissermaßen sprechen, ich kann mein ganz spezifisches Problem in Deutsch oder (besser!) in Englisch beschreiben und erhalte eine Antwort, die exakt auf die Aufgabenstellung eingeht. Bei Bedarf kann ich sogar um eine Nachbesserung im einen oder anderen Punkt bitten. Die Arbeitsweise ist für mich ungleich intuitiver, angenehmer und »menschlicher« als der Ansatz des Copiloten, einfach nur Code zu einer Funktionsdeklaration zu liefern.

Mich hat der Copilot schon in der Beta-Phase nicht so recht begeistert, und mit ChatGPT sieht das Angebot — nur wenige Monate nach der Markteinführung — schon ziemlich alt aus.

Letzte Anmerkungen

  • Ich habe aktuell keine Angst, dass mich ChatGPT oder eine ähnliche Technik als Programmierer, Admin, Vortragender oder Autor ablöst. Für mich ist ChatGPT einfach ein neues Hilfsmittel bei meiner Arbeit.
  • Insofern halte ich es auch für verrückt, den Einsatz in Schulen, Unis etc. zu verbieten. Das Ziel muss es vielmehr sein, KI-Tools produktiv (und durchaus verantwortungsvoll) anwenden zu lernen. Dieser Grundsatz gilt ja auch für andere Werkzeuge, die wir heute als selbstverständlich einsetzen, von der Rechtschreibkorrektur bis zur Nutzung der Wikipedia.
  • Ich bin mir ziemlich sicher, dass der Nutzen von KI-Tools umso höher ist, je größer das eigene Wissen ist. Insofern ersetzen diese Tools weder qualifizierte Mitarbeiter noch deren Ausbildung.
  • Vielleicht bin ich altmodisch, aber ich pflege einen höflichen Umgangston mit ChatGPT und vergleichbaren Werkzeugen.
  • Zu guter Letzt habe ich das Gefühl (das ich aber nicht objektiv belegen kann), dass die Kommunikation in englischer Sprache zu besseren Ergebnissen führt als Anfragen in Deutsch. Grundsätzlich ist es verblüffend, dass ChatGPT nahezu jeder Sprache mächtig ist. Aber die IT-Welt ist englisch. StackOverflow ist englisch. Die Originaldokumentation nahezu jedes IT-Tools ist englisch. Selbst Entwickler, die eine andere Muttersprache haben, verwenden in der Regel englischsprachige Variablen-, Klassen- und Methodennamen, kommentieren ihren Code idealerweise in Englisch. Insofern erscheint es mir nahe liegend, Code-Fragen in Englisch zu formulieren, was sich auch in den meisten Screenshots dieses Texts widerspiegelt.

Links

Eine andere Meinung, etwas skeptischer, aber auch mit wesentlich spezielleren Fragen:

❌
❌