Support » Plugins » [Plugin gesucht] Einfache Ausgabe eines Kommandos

  • Hallo Leute, ich suche ein Plugin welches mir das Ergebnis eines vorher festgelegten Kommandos ausgibt, wenn die Webseite aufgerufen wird.

    Beispiel: Bei jedem Seitenaufruf sollen immer die Files ausgegeben werden, die Tom aktuell in seinem Homeverzeichnis hat. Dazu konfiguriere ich einfach das Plugin mit ‚ls -lisa /home/Tom‘.
    Bei jedem Seiten-Aufruf würden dann einfach nur die Files gelistet, die Tom in seinem home hat.

    Danke
    Tom

    • Dieses Thema wurde geändert vor 3 Monaten, 1 Woche von tomscott1. Grund: Überschrift aussagekräftiger

    Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]

Ansicht von 10 Antworten - 1 bis 10 (von insgesamt 10)
  • Moderator Michi91

    (@michi91)

    Du könntest wp snippets nehmen, dort shortcodes anlegen und per php Befehle ausführen. https://www.php.net/manual/en/function.shell-exec.php

    Fertige Plugins gibt es dazu vermutlich nicht, da jeder normale Webhoster den shell exec Aufruf deaktiviert.

    Thread-Starter tomscott1

    (@tomscott1)

    Vielen Dank für deine Antwort. Um ehrlich zu sein, ich verstehe es nicht. Ein Plugin mit dem Namen ‚WP snippets“ habe ich nicht gefunden. Aber es gibt ein Plugin mit dem Namen „Code Snippets“. Was bedeutet „Short Code anlegen“?

    Anonymous User 20597857

    (@anonymized-20597857)

    Es gibt deren etliche, einige davon werden hier gerne hervorgehoben und die sind auch gut. Glaube, es ist das erste im Suchergebniss: https://de.wordpress.org/plugins/search/Code+Snippets/

    Ich selber nehme gerne https://de.wordpress.org/plugins/post-snippets/

    Was bedeutet „Short Code anlegen“?

    Da gibt es viele Wege und noch mehr nützliche Anwendungsfälle für.
    Am einfachsten geht das eben mit den genannten Plugins. Zumindest „meins“ bietet an, den eigenen Code als [Shortcode] zu generieren.
    Diesen [Shortcode] kopiert man dann an die Stelle einer Seite, Beitrag, Text- oder HTML-Widget, wo der Code des Snippets sein Werk tun soll.

    Beispiel: Bei jedem Seitenaufruf sollen immer die Files ausgegeben werden, die Tom aktuell in seinem Homeverzeichnis hat.

    Ich hatte mal für eine ähnliche Frage ein kleines Plugin geschrieben:

    https://github.com/pixolin/pix-dirlisting/blob/main/pix-listing.php

    Fügst du nach Aktivierung des Plugins in einer Seite den Shortcode [dirlisting name="tom"] ein, werden die Dateien in einem Unterverzeichnis wp-content/uploads/tom in einer Liste mit Link zur Datei ausgegeben.

    Wahrscheinlich ist das nicht 💯% das, was du möchtest (du nennst z.B. ein Verzeichnis außerhalb des WordPress-Verzeichnisses, woraus sich dann auch Fragen zu den Benutzerrechten ergeben), aber vielleicht vermittelt dir das Plugin eine Idee, wie sowas programmiert werden kann. OpenSource, wie es ursprünglich mal gedacht war … 🙂

    Wie @michi91 bereits schrieb, ist die Verwendung von shell_exec() häufig aus Sicherheitsgründen gesperrt. Auch wenn ich auf die Schnelle kein Beispiel nennen kann, sagt mir ein ungutes Bauchgefühl, dass durch die Verwendung von shell_exec() rasch Sicherheitslücken entstehen können. Zumindest solltest du über gute Programmierkenntnisse verfügen, um das selber umzusetzen.

    Thread-Starter tomscott1

    (@tomscott1)

    Vielen Dank für Eure Zusendungen und ja ich wundere mich wie kompliziert das ist. Der shell_exec() Aufruf ist kein Problem, denn der Oberindianer aller Apachen bin ich nämlich selber.

    Und ja, Bego Mario hat Recht, denn das mit dem ‚ls -lisa‘ ist nur ein Beispiel um das verständlicher zu machen. Eigentlich will ich die Ausgabe von ‚inxi -F‘ da an der Stelle ausgeben. Das ist alles.

    Was auch immer du da machen möchtest – es wird keine fertige Lösung geben, die deinen doch recht individuellen Wunsch vollständig abbildet. Zu der Frage, wie sich ein entsprechender Shortcode programmieren lässt, habe ich dir das Plugin als Beispiel genannt. Solltest du selber nicht programmieren können oder wollen, kannst du das als Grundlage für ein Gespräch mit einem Freelancer verwenden. Über Freelancer-Portale wie z.B. Fiverr findest du sicher jemand, der das rasch und günstig umsetzt.

    Thread-Starter tomscott1

    (@tomscott1)

    Ach iwo, das ist eine ganz private Webseite just for fun. Ich kopiere die Ausgabe des entsprechenden Befehls dann eben fix in die Seite rein und gut ist. Das ist dann eben statisch und ich muß es dann halt immer wieder ändern wenn sich etwas am System ändert.

    Ich bin nur extrem verstört über die Komplexität der Lösung zu einer eigentlich ganz einfachen Aufgabe. Ich hatte gedacht, dass diese Aufgabe Millionenfach pro Tag in der Welt auftaucht und dachte eben, dass es doch nicht so schwer sein kann die Ausgabe eines Linux Kommandos dynamisch auf eine Seite zu kriegen. Aber krass dass sich die Welt damit scheinbar abfindet.

    … dass es doch nicht so schwer sein kann die Ausgabe eines Linux Kommandos dynamisch auf eine Seite zu kriegen

    Tatsächlich ist es so, dass Server-Administratoren die Ausgabe eines Verzeichnisinhalts („Directory-Listing“) serverseitig aus Sicherheitsgründen unterbinden, weil sonst ein Fingerprinting Angreifern rasch mögliche Sicherheitslücken präsentieren würde.

    Der Webserver ist außerdem vom restlichen System durch eingrenzende Benutzerrechte (Benutzer/Gruppe www-data) getrennt und die Ausführung von Systembefehlen durch den Webserver dürfte manchen Administrator etwas nervös machen.

    Viel Erfolg mit der Website.

    Moderator Michi91

    (@michi91)

    Hallo Häuptling 🙂

    Die Welt findet sich nicht damit ab, sondern es ist ein Wunsch der keinesfalls millionenfach auftaucht. Vielleicht im Bereich der Server Admin WebGUI’s und selbst da geht der Trend Richtung Mehrschicht und den Verzicht auf Shell-Exec, weil zu gefährlich.

    Shell-Exec stellt ansich auch ein erhebliches Sicherheitsrisiko dar. Stell dir vor deine Website wird gehackt (und das passiert tatsächlich laut Forbes Millionenfach pro Jahr). Nun könnte der Hacker einfach ‚rm -rf /‘ ausführen, wenn shell_exec erlaubt wird. Oder die Festplatte verschlüsseln. Oder Bitcoins minen.

    Ich habe übrigens ne viel bessere Lösung als das Ausführen von Shell-Befehlen durch den Webserver:

    Und zwar:
    – Du erstellst einen cronjob, der den Befehl deiner Wahl regelmäßig ausführt und den Output nach /var/www/deineseite/wp-content/output.txt piped.

    Auf diese Weise ergeben sich zwei tolle Dinge:
    – Du brauchst keine shell execution
    – Du läufst auch keine Gefahr einer (d)dos Attacke in Zusammenhang mit dem shell Befehl

    Hier dann noch der Shortcode Code, welchen du entweder in Code Snippets (sorry, früher hieß es mal WP Snippets…) oder in die functions.php deines Themes packen kannst

    // Add this code to your theme's functions.php file or as a code snippet :)
    
    // Define the shortcode function
    function display_output_txt_content() {
        // Get the path to the output.txt file
        $file_path = WP_CONTENT_DIR . '/output.txt';
        
        // Check if the file exists
        if (file_exists($file_path)) {
            // Read the content of the file
            $content = file_get_contents($file_path);
            
            // Wrap the content in <pre> tags to maintain formatting
            $content = '<pre>' . esc_html($content) . '</pre>';
            
            return $content;
        } else {
            return 'File not found';
        }
    }
    // Register the shortcode
    add_shortcode('display_output_txt', 'display_output_txt_content');
    

    [display_output_txt] lautet dann der Shortcode 🙂

    Thread-Starter tomscott1

    (@tomscott1)

    Guten Morgen Michi,

    Du bist der beste Oberindianer aller Zeiten. So werde ich das machen. Das ist eine gute Idee:
    – Den cronjob wie oben beschrieben erstellen
    – Plugin ‚Code Snippets‘ installieren
    – obigen Code-Snippet in Plugin ‚Code Snippet‘ registrieren
    – Shortcode „[display_output_txt]“ an der Stelle in der Webseite platzieren

    Danke,
    Tom

Ansicht von 10 Antworten - 1 bis 10 (von insgesamt 10)