www.mikrocontroller.net

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


Autor: Elektro Gandalf (e_g)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Parameter durch & trennen:

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

Autor: Elektro Gandalf (e_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, und wie verarbeite ich die Variablen dann in meinem Shellskript?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Elektro Gandalf (e_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also irgenwie habe ich da wohl nicht ganz verstanden:
also mein Script verarbeitet die Parameter folgendermassen weiter:

echo $1
echo '<br>'
echo $2

wie kann ich im Browser den ersten vom zweiter Parameter(den ich 
übergebe) trennen?

Autor: Elektro Gandalf (e_g)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: Hansl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
fuer cgi shellscriptelein kann ich dir haserl sehr empfehlen:

http://haserl.sourceforge.net/

Autor: Elektro Gandalf (e_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rufus:
Also wenn ich ein Skript schreibe:
echo $1
echo '<br>'
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:
echo $a
echo '<br>'
echo $(b)

Autor: Link (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Elektro Gandalf (e_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die Ausgabe mache ich wie beschrieben mit:
echo $1
echo '<br>' 
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!

Autor: Hansl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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>";

Autor: Hansl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kurzum, QUERY_STRING schoen zerlegen und gut ists.

mfg
 hansl

Autor: Hansl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.