Hallo, wenn ich ein Shellskript schreibe, kann ich auf der Konsole die Parameter einfach durch leerzeichen getrennt hinter den Skriptaufruf schreiben! So, wie mache ich es aber, wenn ich das Script über CGI im Browser aufrufe? Mit einem Parameter geht es (wwww.sadasd.de/cgi-bin/test?Parameter)! Wie mache ich es wenn ich mehr als einen Parameter übergeben will?
Parameter durch & trennen: www.bla.fusel/index.php?a=4&b=3&c=2
Danke, und wie verarbeite ich die Variablen dann in meinem Shellskript?
Sieh Dir doch einfach mal an, wie sie darin ankommen. Du weißt schon, "Probieren geht über ..." Schreib Dir 'nen Einzeiler, der alle übergebenen Argumente in eine Datei schreibt und sieh Dir diese Datei an.
Also irgenwie habe ich da wohl nicht ganz verstanden: also mein Script verarbeitet die Parameter folgendermassen weiter:
1 | echo $1 |
2 | echo '<br>' |
3 | echo $2 |
wie kann ich im Browser den ersten vom zweiter Parameter(den ich übergebe) trennen?
oder, andere Frage: wie muss ich die Parameter weiterverarbeiten, wenn ich sie mittles www.bla.fusel/index.php?a=4&b=3&c=2 übergeben will?
Hast Du schon ausprobiert, wie die Parameter in Deinem Script landen, wenn Du es mit der besprochenen Syntax per Browserinterface aufrufst?
@Rufus: Also wenn ich ein Skript schreibe:
1 | echo $1 |
2 | echo '<br>' |
3 | echo $2 |
dann kann ich das spript mittels Konsole so aufrufen: skript.sh param1 param2 und die Parameter werden korrekt ausgegeben (bzw. weiterverarbeitet)! Wenn ich das skript im Browser aufrufe habe ich absolut keinen plann wie ich die Parameter übergeben soll! Folgendes funktioniert nicht: www.bla.fusel/index.php?1=test1&2=test2 www.bla.fusel/index.php?test1&test2 Ich habe absolut keinen Ansatz, wie ich die Parameter korrekt trennen muss! Und bei der von dir Beschriebenen Methode, weiß ich nicht wie ich die Parameter im Skript veiterverarbeiten soll! www.bla.fusel/index.php?a=4&b=3 also folgendes Funktioniert nicht:
1 | echo $a |
2 | echo '<br>' |
3 | echo $(b) |
> Folgendes funktioniert nicht: > www.bla.fusel/index.php?1=test1&2=test2 > www.bla.fusel/index.php?test1&test2 Was heißt "funktioniert nicht"? Explodiert Dein Monitor, bekommst Du Haarausfall oder siehst Du nur nicht die Ausgaben Deines Skriptes? Oder gibt das was anderes aus als Du erwartest?
Also die Ausgabe mache ich wie beschrieben mit:
1 | echo $1 |
2 | echo '<br>' |
3 | echo $2 |
Bei www.bla.fusel/index.php?1=test1&2=test2 wird nichts ausgegeben. Bei www.bla.fusel/index.php?test1&test2 wird "test1&test2" als 1. Parameter ausgegeben und der 2. Parameter bleibt leer!
elektro gandalf: hier mal was zum angucken teststring zb: http://127.0.0.1/do.cgi?1=hallo welt&2=schoene welt #!/bin/bash OPTION1=`echo "$QUERY_STRING" | grep -oE "(^|[?&])1=[^&]+" | sed "s/%20/ /g" | cut -f 2 -d "=" | head -n1` OPTION2=`echo "$QUERY_STRING" | grep -oE "(^|[?&])2=[^&]+" | sed "s/%20/ /g" | cut -f 2 -d "="` echo "Content-type: text/html" echo "" echo "<html><head><title>bliblablu</title></head><body><h1>blublabli</h1><pre >"; echo "OPTION1: <em>$OPTION1</em><br />" echo "OPTION2: <em>$OPTION2</em><br />" echo "</pre></body></html>";
kurzum, QUERY_STRING schoen zerlegen und gut ists. mfg hansl
was soll eiegtnlich der php suffix, dachte mir das ist ein shellscript? das das ganze super gefaehrlich ist und ncioht fuer jeden mit internetanschluss erreichbar sein sollte ist klar oder? ohne vernuenftiges parsen oeffnest du da manipulationen tuer und tor.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.