Forum: PC-Programmierung Shellsript als CGI (Parameterübergabe)?


von Elektro G. (e_g)


Lesenswert?

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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Parameter durch & trennen:

  www.bla.fusel/index.php?a=4&b=3&c=2

von Elektro G. (e_g)


Lesenswert?

Danke, und wie verarbeite ich die Variablen dann in meinem Shellskript?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Elektro G. (e_g)


Lesenswert?

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?

von Elektro G. (e_g)


Lesenswert?

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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hast Du schon ausprobiert, wie die Parameter in Deinem Script landen, 
wenn Du es mit der besprochenen Syntax per Browserinterface aufrufst?

von Hansl (Gast)


Lesenswert?

fuer cgi shellscriptelein kann ich dir haserl sehr empfehlen:

http://haserl.sourceforge.net/

von Elektro G. (e_g)


Lesenswert?

@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)

von Link (Gast)


Lesenswert?


von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> 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?

von Elektro G. (e_g)


Lesenswert?

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!

von Hansl (Gast)


Lesenswert?

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>";

von Hansl (Gast)


Lesenswert?

kurzum, QUERY_STRING schoen zerlegen und gut ists.

mfg
 hansl

von Hansl (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.