<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Shell on zefanjas.de - Open Source &amp; Education</title>
    <link>https://zefanjas.de/tags/shell/</link>
    <description>Recent content in Shell on zefanjas.de - Open Source &amp; Education</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>de-DE</language>
    <lastBuildDate>Wed, 28 Nov 2018 13:29:24 +0000</lastBuildDate><atom:link href="https://zefanjas.de/tags/shell/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>pfSense automatisieren mit pfSsh.php</title>
      <link>https://zefanjas.de/pfsense-pfssh/</link>
      <pubDate>Wed, 28 Nov 2018 13:29:24 +0000</pubDate>
      
      <guid>https://zefanjas.de/pfsense-pfssh/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://zefanjas.de/tag/pfsense/&#34;&gt;pfSense&lt;/a&gt; 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 &lt;a href=&#34;https://www.netgate.com/docs/pfsense/development/using-the-php-pfsense-shell.html&#34;&gt;pfSsh.php&lt;/a&gt; genannt.&lt;/p&gt;
&lt;h2 id=&#34;auf-pfsshphp-zugreifen&#34;&gt;Auf pfSsh.php zugreifen&lt;/h2&gt;
&lt;p&gt;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 &lt;em&gt;&lt;strong&gt;System → Advanced&lt;/strong&gt;&lt;/em&gt; nachholen.&lt;/p&gt;
&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;aligncenter size-full wp-image-2804&#34; src=&#34;https://zefanjas.de/wp-content/uploads/2018/11/Auswahl_221.png&#34; alt=&#34;pfSense SSH aktivieren&#34; width=&#34;1157&#34; height=&#34;226&#34; srcset=&#34;https://zefanjas.de/wp-content/uploads/2018/11/Auswahl_221.png 1157w, https://zefanjas.de/wp-content/uploads/2018/11/Auswahl_221-300x59.png 300w, https://zefanjas.de/wp-content/uploads/2018/11/Auswahl_221-768x150.png 768w, https://zefanjas.de/wp-content/uploads/2018/11/Auswahl_221-1024x200.png 1024w, https://zefanjas.de/wp-content/uploads/2018/11/Auswahl_221-604x118.png 604w&#34; sizes=&#34;(max-width: 1157px) 100vw, 1157px&#34; /&gt; 
&lt;p&gt;Besser ist es, wenn man das Einloggen mit Passwort verbietet und nur das Anmelden mit Zertifikat erlaubt.&lt;/p&gt;
&lt;p&gt;Ist der SSH-Zugang aktivert, kann man sich nun mit dem Admin-Benutzer anmelden (IP anpassen):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ ssh admin@192.168.1.254
&lt;/code&gt;&lt;/pre&gt;&lt;img loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;aligncenter size-full wp-image-2805&#34; src=&#34;https://zefanjas.de/wp-content/uploads/2018/11/Auswahl_222.png&#34; alt=&#34;pfSense CLI&#34; width=&#34;663&#34; height=&#34;320&#34; srcset=&#34;https://zefanjas.de/wp-content/uploads/2018/11/Auswahl_222.png 663w, https://zefanjas.de/wp-content/uploads/2018/11/Auswahl_222-300x145.png 300w, https://zefanjas.de/wp-content/uploads/2018/11/Auswahl_222-559x270.png 559w&#34; sizes=&#34;(max-width: 663px) 100vw, 663px&#34; /&gt; 
&lt;p&gt;Unter Punkt 12 findet man die Entwickler-Shell, die im Grunde eine PHP-Shell ist.&lt;/p&gt;
&lt;h2 id=&#34;beispielbefehle-für-pfsshphp&#34;&gt;Beispielbefehle für pfSsh.php&lt;/h2&gt;
&lt;p&gt;Hier einige Beispielbefehle, die zeigen sollen, wie man die Shell verwenden kann. Jede Eingabe ist normaler PHP Code und muss mit &lt;code&gt;exec;&lt;/code&gt; abgeschlossen werden.&lt;/p&gt;
&lt;h3 id=&#34;dhcp-einstellungen-anzeigen&#34;&gt;DHCP Einstellungen anzeigen&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pfSense shell: print_r($config[&amp;#34;dhcpd&amp;#34;]);
pfSense shell: exec;
Array
(
    [lan] =&amp;amp;gt; Array
        (
            [range] =&amp;amp;gt; Array
                (
                    [from] =&amp;amp;gt; 10.0.1.7
                    [to] =&amp;amp;gt; 10.0.255.245
                )

        )

)
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;domain-festlegen&#34;&gt;Domain festlegen&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pfSense shell: $config[&amp;#39;system&amp;#39;][&amp;#39;domain&amp;#39;] = &amp;#39;mydomain.com&amp;#39;;
pfSense shell: write_config();
pfSense shell: exec;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;shell-8211-befehle-ausführen&#34;&gt;Shell – Befehle ausführen&lt;/h3&gt;
&lt;p&gt;Innerhalb der PHP Shell kann man auch normale Shell-Befehle ausführen, indem man ein „!“ davor setzt:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pfSense shell: ! cat /etc/version
pfSense shell: exec;
2.4.3-RELEASE
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;befehle-8222aufnehmen8220-und-8222abspielen8220&#34;&gt;Befehle „aufnehmen“ und „abspielen“&lt;/h3&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pfSense shell: record echoTest
Recording of echoTest started.
pfSense shell: echo &amp;#34;Das\n&amp;#34;;
pfSense shell: echo &amp;#34;ist\n&amp;#34;;
pfSense shell: echo &amp;#34;ein\n&amp;#34;;
pfSense shell: ! echo &amp;#34;Test\n&amp;#34;
pfSense shell: exec;
pfSense shell: stoprecording 
Recording stopped.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Die Eingaben werden unter &lt;em&gt;/etc/phpshellsessions/&lt;/em&gt; gespeichert und können dort bei Bedarf verändert werden.&lt;/p&gt;
&lt;p&gt;Die „Aufnahme“ kann man nun wie folgt wiedergeben:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pfSense shell: playback echoTest

Playback of file echoTest started.

Das
ist
ein
Test

pfSense shell:
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;oder auch direkt von der root-Shell mit:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ pfSsh.php playback echoTest
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;fazit&#34;&gt;Fazit&lt;/h2&gt;
&lt;p&gt;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 &lt;em&gt;/etc/phpshellsessions/&lt;/em&gt; speichern und dann ausführen oder direkt die Ausgabe an pfSsh.php weiterleiten:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ ssh admin@192.168.1.254 &amp;#39;/usr/local/sbin/pfSsh.php&amp;#39; &amp;amp;lt; MeineConfig.txt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt; &lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
