CGI Bash script

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
lordofdarkness
Beiträge: 23
Registriert: 22.01.2015 09:10:47

CGI Bash script

Beitrag von lordofdarkness » 20.07.2016 09:07:50

Hi,
ich habe ein bash script dial.sh.
Wenn ich per ssh eingeloggt bin, kann ich es aufrufen mit übergeben von 4 Parametern. Funktioniert.

./dial.sh 192.168.0.247 heinz 77777 015168151171

Ich habe nun ein kleines CGI-Script, welches das dial.sh aufrufen soll. Funktioniert aber leider nicht. Kommt immer login failed. Das heisst die Parameter werden nicht übergeben. Beide liegen in /usr/lib/cgi-bin und sind 755.

Hat da mal jemand eine Idee?

Code: Alles auswählen

#!/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 "="`
OPTION3=`echo "$QUERY_STRING" | grep -oE "(^|[?&])3=[^&]+" |  sed "s/%20/ /g" | cut -f 2 -d "="`
OPTION4=`echo "$QUERY_STRING" | grep -oE "(^|[?&])4=[^&]+" |  sed "s/%20/ /g" | cut -f 2 -d "="`
echo "Content-type: text/html"
echo ""
echo "<html><head><title>carhs telefonmaschine</title></head><body><h1>created by Heinz</h1><pre>";
echo "IP: <em>$OPTION1</em><br />"
echo "username: <em>$OPTION2</em><br />"
echo "password: <em>$OPTION3</em><br />"
echo "dialToNumber: <em>$OPTION4</em><br />"
echo "</pre></body></html>";
#./dial.sh 192.168.0.247 heinz 4444 015168151171 (geht leider auch nicht)
./dial.sh $OPTION1 $OPTION2 $OPTION3 $OPTION4
Zuletzt geändert von lordofdarkness am 25.07.2016 10:32:03, insgesamt 1-mal geändert.

Benutzeravatar
heisenberg
Beiträge: 3540
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: CGI Bash script

Beitrag von heisenberg » 20.07.2016 11:17:05

Na dann erzeuge doch mal ein paar Ausgaben in Deinem Script, um zu schauen was es so anstellt...

Code: Alles auswählen

#!/bin/bash

exec $0 2>/tmp/ausgabe.log
echo "$QUERY_STRING" >&2

# weiter geht's mit dem script
...
echo "DEBUG: $BLA $OPTION1..." >&2
...
Jede Rohheit hat ihren Ursprung in einer Schwäche.

lordofdarkness
Beiträge: 23
Registriert: 22.01.2015 09:10:47

Re: CGI Bash script

Beitrag von lordofdarkness » 20.07.2016 12:08:53

ungefähr so?

Code: Alles auswählen


#!/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 "="`
OPTION3=`echo "$QUERY_STRING" | grep -oE "(^|[?&])3=[^&]+" |  sed "s/%20/ /g" | cut -f 2 -d "="`
OPTION4=`echo "$QUERY_STRING" | grep -oE "(^|[?&])4=[^&]+" |  sed "s/%20/ /g" | cut -f 2 -d "="`

echo "Content-type: text/html"
echo ""
echo "<html><head><title>carhs telefonmaschine</title></head><body><h1>created by Heinz</h1><pre>";
echo "IP: <em>$OPTION1</em><br />"
echo "username: <em>$OPTION2</em><br />"
echo "password: <em>$OPTION3</em><br />"
echo "dialToNumber: <em>$OPTION4</em><br />"
echo "</pre></body></html>";
exec $0 2>/tmp/ausgabe.log
echo "$QUERY_STRING" >&2
echo "DEBUG: $OPTION1 $OPTION2 $OPTION3 $OPTION4" $OPTION1 $OPTION2 $OPTION3 $OPTION4

./dial.sh 192.168.0.247 heinz 4444 015168151171

Zuletzt geändert von lordofdarkness am 25.07.2016 10:31:40, insgesamt 1-mal geändert.

Benutzeravatar
heisenberg
Beiträge: 3540
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: CGI Bash script

Beitrag von heisenberg » 20.07.2016 12:43:54

Ähem sorry. Eher so....

Code: Alles auswählen


#!/bin/bash
exec 2>>/tmp/ausgabe.log
echo "$QUERY_STRING" >&2

# weiter geht's mit dem script
...
echo "DEBUG: $BLA $OPTION1..." >&2
Also exec statt exec $0 und doppelte Umlenkung für anhängen statt überschreiben.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

lordofdarkness
Beiträge: 23
Registriert: 22.01.2015 09:10:47

Re: CGI Bash script

Beitrag von lordofdarkness » 25.07.2016 10:38:51

Hi,
also ich hab die Pfade mal nach /tmp geändert. Nun scheints zu funktionieren.
cookie.txt wird nun schon mal erstellt.

Benutzeravatar
heisenberg
Beiträge: 3540
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: CGI Bash script

Beitrag von heisenberg » 25.07.2016 14:42:42

Also /tmp ist jetzt nicht so das Verzeichnis in dem man so arbeiten will.

Warum? Nun, es wird z. B. bei jedem Neustart des Systems gelöscht.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Antworten