Per CGI-Skript zur Kommandozeile (Bash)

Hallo zusammen,
gibt es CGI-Skripte, die eine Bash auf einem Webserver (ohne Telnet oder SSH Zugang) „simulieren“?
Ich meine mich daran erinnern zu können, dass ich sowas schon mal gesehen habe. Die Ausgabe muss natürlich auch dargestellt werden, d.h. ich will ein „ls -al“ absetzen und das Ergebniß im Browserfenster sehen.

Das das Skript entsprechend durch unbefugten Aufruf geschützt werden muß ist klar (.htaccess und eventuell noch interne Prüfung).

Danke!

Hi Tino,
folgendes Script zeigt dir schonmal die Dateien, vielleicht hilft es ja :wink:

#!/usr/local/bin/perl

use CGI;
use File::Copy;
$query= new CGI;

$dir = „-kompletter Pfad auf dem Server-“;
print $query->header;
opendir(DIR, „$dir“);
print „“-//W3C//DTD HTML 4.0 Transitional//EN">\n";
print „\n“;
print „\n“;
print „Verzeichnis …\n“;
print „\n“;
print " Hier haben Sie einen Überblick über folgenden Ordner \n";
print „\n“;
print „\n“;
print „Dateiname\n“;
print „\n“;

foreach $direntry (readdir(DIR)){
next if $direntry eq „.“;
next if $direntry eq „…“;
print „\n“ if -f „$dir/$direntry“;
print „$direntry“ if -f „$dir/$direntry“;
}
print „\n“;

closedir(DIR);

GreetZ
Jens

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Tino,

gibt es CGI-Skripte, die eine Bash auf einem Webserver (ohne
Telnet oder SSH Zugang) „simulieren“?
Ich meine mich daran erinnern zu können, dass ich sowas schon
mal gesehen habe. Die Ausgabe muss natürlich auch dargestellt
werden, d.h. ich will ein „ls -al“ absetzen und das Ergebniß
im Browserfenster sehen.

Das kannst du dir ganz leicht selbst basteln.
Shell-Befehle lassen sich in Perl mit den verschiedensten Methoden ausführen. In deinem Falle sind die Backticks interessant. Sie führen einen Systembefehl aus und geben die Ausgabe zurück.
Beispiel:

my $list = ls -l;

Damit wird ein Directory-Listing des aktuellen Verzeichnisses in der Variable $list abgespeichert.
Das `-Zeichen bekommst du über [SHIFT] und die Taste links neber der Rücktaste.

Sei aber vorsichtig! Die Befehle dürfen keine Benutzereingaben verlangen, sonst wird das Script überlastet.

Viele Grüße
Patrick Canterino