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: 4203
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
...

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: 4203
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.

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: 4203
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.

Antworten