Per CGI bekommst du die Daten hinter der Basis-URL in der Variable QUERY_STRING übermittelt, wenn du die Methode "get" nimmst. Bei "post" bekommst du die Daten per Standardeingabe. Das Ergebnis gibst du auf die Standardausgabe aus.
Mach mal ein supersimples CGI in bash:
Code: Select all
#!/bin/bash
printf "Content-Type: text/html\n\n"
printf "<html><head></head><body>"
printf "<h1>env</h1><p><code>"
env
printf "</code></p><hr>"
printf "<h1>stdin</h1><p><code>"
/bin/cat
printf "</code></p>"
printf "</body></html>"
Das Skript oben schreibt dir nur die Variableninhalte und den Inhalt der Standardeingabe in einen HTML-Rahmen und gibt den dann mit passendem HTTP-Header zurück.
Von dieser Basis aus kannst du dann mit Shell-Mitteln und externen Hilfsprogrammen (awk,sed etc.) erweitern.
Weitere Vorschläge hab' ich durch Googlen mit "CGI shell" gefunden. Z.B.
http://www.yolinux.com/TUTORIALS/LinuxT ... cript.html
http://www.mail-archive.com/mathopd%40m ... 00234.html
Dein konkretes Problem erfordert es, den QUERY_STRING in die einzelnen Zuweisungen auseinanderzuschnippeln, was in der Shell selbst nicht ganz trivial ist. IFS auf & zu setzen, dann auf = sollte helfen, aber evtl. ist es besser, gleich den ganzen String in awk reinzuwerfen. Weiteres Problem: Sonderzeichenbehandlung. Beispielsweise wird das Leerzeichen vom Browser entweder als + oder als %20 kodiert, und das + als %2B oder %2b usw. usw.
Oder man nimmt gleich eine Skriptsprache, die für Stringmanipulation gedacht ist, also Tcl oder Perl. Da gibt es dann auch gleich passende Bibliotheken, die einem die Arbeit abnehmen die ganzen Spezialitäten selbst zu entwickeln. Vor allem sind die Bibliotheken sicher besser getestet als das, was man selbst macht.
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.