CGI-Programmierung mit shell-Skripten
Ich übergeben zu müssen, den Inhalt der textbox in eine variable. d.h. unabhängig von der Eingabe in die texbox der html-Seite benötigt werden, übergeben, um eine variable. Das ist, weil ich bin Aufruf der HTML-CGI (auch) im inneren, linux-shell-Programmierung. Ich brauche zu manipulieren, dass die variable, wie ich will. Haben Sie eine Idee haben, es zu tun?
Was ich tun muss, ist, ich möchte die MAC-Adresse als input vom Benutzer. d.h. wir sollten eine HTML-Seite mit einem Textfeld, so wird der Benutzer in der Lage sein, die Eingabe der MAC-Adresse. also, was Benutzer in das Textfeld übergeben werden müssen, um eine variable.
Haben wir einmal die variable, wird das Skript automatisch dieser MAC-Adresse in linux-firewall zu verweigern Sie den Zugriff.
Der code sollte ähnlich der folgenden sein:
!/bin/bash
echo "Content-type: text/html"
echo ""
echo ""
echo "enter the MAC address "
iptables -A INPUT -m mac --mac-source $mac_address -j DROP
service iptables save
service iptables restart
Speichere ich diese Datei (test.cgi) unter /var/www/cgi-bin-Verzeichnis, und ich werde führen Sie das Skript aus firefox.
Also, das problem, jetzt habe ich die variable $mac_address
. Die CGI nicht passieren die textbox Eingabe in der Variablen " $mac_address.
- Ich glaube, Sie brauchen, klarer zu werden in dem, was Sie erreichen wollen. Vielleicht ein Beispiel ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die wirkliche Antwort auf diese Frage ist nicht.
Ihrem web-server scheint zu laufen mit
root
Privilegien. Das ist das erste no-no.Wollen Sie wirklich erlauben, die ganze weite Welt, um in der Lage zu basteln, der mit Ihrer firewall-Konfiguration? Sie haben keine Kontrolle darüber, wie Sie Ihre shell-Skript wird aufgerufen, was wird an Sie übergeben. Sie öffnen großen Sicherheitslücken.
Sehen die WWW-Security-FAQ, die auf CGI-Skripte und Writing secure CGI-Skripte sowie CGI-Sicherheit : Vorsicht ist Besser als Nachsicht.
Lesen Sie zuerst die CGI-primer.
Müssen Sie eine HTML-Seite mit code wie diesem:
Wenn der Benutzer auf dem Formular-Submit-button, wird Ihre Bash-CGI-Programm ausgeführt. (/path/to/cgi-bin/my-fw-script.sh im obigen Beispiel.) Die text-Eingabe wird in die QUERY_STRING Umgebungsvariable, in der form variable=Wert. Für einfache Eingaben, können Sie einfach rufen Sie die Bash-Funktion eval, diesen in eine Bash-variable:
Dies funktioniert nur für ein einziges input-Feld, und wird brechen, wenn Sie Leerzeichen oder andere spezielle Zeichen. Ich kann mir vorstellen das bash_cgi Sache, die jemand anderes empfohlen wird, kümmern sich um diese details für Sie. Tun Sie es, wie im obigen Beispiel nur, wenn das Programm bleiben sehr einfach.
Durch die Art und Weise, Sie fast sicher wollen nicht das hinzufügen von MAC-Adressen für die firewall. Das funktioniert nur für hosts, auf dem gleichen LAN wie die Firewall-box. Pakete aus einem anderen LAN, das Internet, usw. wird die MAC-Adresse des LAN gateway. Sie sollten wahrscheinlich blockieren von hosts durch die IP-Adresse statt.
Check-out bashlib - CGI-Programmierung mit der bash-shell
Ist es super einfach zu bedienen und macht die übergabe von url-Zeichenfolgen als Variablen, etc. ein Kinderspiel. Lassen Sie sich nicht die Neinsager Hass auf die bash als web-scripting-Sprache. Sie halten Ihre eigenen... und es ist einfach, überall und wirksam... Das geht etwas gegen den Strich, aber wenn Sie nicht leicht zu peer-Druck, würde ich sagen, gehen für Sie.
Verwandte und cool: xmlsh und shellinabox.
Leider halten herumreiten auf diesem Punkt, ich denke nur, es auch Spaß...
So für die ultimative do-alle CGI-script, check this out...
Warnung... nicht für Sicherheits-freaks oder für jeden, der nicht vollkommen bewusst, was das unten bringt...