Ausführen eines Shell-Skripts auf einem Webserver, als wäre es interaktiv

1662
N00bler

Ich habe ein Shell-Skript (csh) - ich habe es nicht geschrieben, deshalb kann ich es jetzt nicht ändern. Das Skript führt eine umfangreiche Analyse der Protokolldateien durch, ruft andere Skripts in Sprachen wie Perl und Tcl auf, erstellt neue Dateien und ruft ausführbare Dateien auf. Es läuft gut von der Kommandozeile.

Ich möchte das Skript aus einem HTML-Formular ausführen können (das kann ich tun), normal arbeiten und den Text, der normalerweise an das Terminal gesendet wird, an einen Webbrowser ausgeben.

Ich bin auf Ubuntu 10.10 und habe lighttpd 1.4.26 installiert. Das Skript benötigt nur eine einzige Variable, die ihm aus dem HTML-Code übergeben wird.

Es funktioniert nicht richtig.

  1. Ich verknüpfen das 10-cgi.confzu conf-enabled. Dies sollte CGI aktivieren, so scheint es.
  2. Ich habe die server.usernameund server.groupnameZeilen in kommentiert lighttpd.conf. Dies lässt den Server offenbar Skripts als "root" ausführen.
  3. Ich habe ein kleines Skript erstellt, das die Abfragezeichenfolge übernimmt, analysiert und das wirklich nützliche Skript aufruft.

Hier sind die Probleme, die ich habe:

  1. Ich füge hinzu pwdund es wird das richtige Verzeichnis ausgegeben. Dieser Pfad wird jedoch nicht verwendet, wenn Dateien mit '>' geschrieben werden. Ich muss den gesamten Pfad für jeden Dateizugriff dieser Art manuell hinzufügen - warum?

  2. Es gibt keinen Weg definiert, so dass keiner der Befehle wie head, tail, grep, ifconfigetc Arbeit. Ich habe ein hartcodiertes PATH = hinzugefügt, das scheint zu funktionieren, aber selbst dann funktionieren einige Befehle einfach nicht. Ich habe den gleichen PATH kopiert wie den einer interaktiven Shell. Gibt es eine Längenbegrenzung? Warum gibt es keinen PFAD?

  3. Dies hängt damit zusammen, dass beim Aufruf von ausführbaren Dateien verwirrt zu sein scheint, wo sie sich befinden, da relative Pfade ../../ nicht mehr funktionieren.

Ich habe das Gefühl, dass dies eine Art Benutzererlaubnis oder ein interaktives oder ein nicht interaktives Problem ist.

Ein wichtiger Hinweis ist, dass dies niemals im Web erfolgen wird, sondern nur lokal in einem kleinen Setup mit einigen wenigen qualifizierten Benutzern ausgeführt wird. Sicherheit ist eigentlich kein Problem.

2

0 Antworten auf die Frage