dial a cgi

Honza Kuklik xkuklik na informatics.muni.cz
Středa Listopad 29 16:07:00 CET 2000


On Tue, 28 Nov 2000, Michal Sviga wrote:

krasny den preju

> Cgi script jiz mam a na konzoli se vse spusti v poradku.
> V prohlizeci to je jiz problem.
> 
> #!/bin/sh
> echo "Content-type: text/html"
> echo
> echo "CGI script output"
> echo "<H1>Pokus o vytoceni Volny</H1>"
> /usr/bin/wvdial VOLNY
> 
> Vse se zobrazi, ale kdyz se ma vytacet, tak nic.
> Jedine co najdu je hlaska v error_log a to:
> --> WvDial: Internet dialer version 1.41
> --> Cannot open /dev/ttyS2: Device or resource busy

tipnul bych, ze uz pppd v tuhle chvili bezel, jak jste wvdial zpoustel z
konzole. jinak co se tyce toho device, problem muze byt, pokud do nej uzivatel
www (ci jiny, pod kterym vam bezi apache) nema prava na cteni a zapis.
rychle reseni je dat wvdialu s-bit (a sobe jednu za usi), cisteji se to 
da osetrit pres separatniho uzivatele pro wvdial, grupu vlastnici /dev/ttyS2
s pravem rw, nastaveny s-bit wvdialu a pridani uzivatele, kteremu wvdial
patri, do teto skupiny. 

kdyz jsem podobny problem resil, napsal jsem na to nasledujici 3 scripty.
je to sice bastl, ale kdyz si to upravite k obrazu svemu, tak vam to treba 
pomuze.

iconnect.cgi:

#!/bin/bash

echo "Content-type: text/plain"
echo

ST="`route -n | grep ppp0 | wc -l`"

if [ $ST -eq 0 ]; then
        echo
        echo "Pripojovani k isp Volny."
        echo
        nohup wvdial Volny &
else
        echo
        echo "Jiz jste pripojen."
fi
exit 0

disconnect.cgi:

#!/bin/bash

echo "Content-type: text/plain"
echo

ST="`route -n | grep ppp0 | wc -l`"

if [ $ST -eq 0 ]; then
        echo
        echo "Nejste pripojeni k internetu."
else
        killall -q -HUP pppd 
        echo
        echo "Odpojuji vas od internetu ... Odpojeno."
fi
exit 0

tstconnect.cgi:

#!/bin/bash

CF_getCTime ()
# tady to predpoklada, ze mate v ip-up.local vytvoreni souboru,
# ktery obsahuje cas pripojeni ve tvaru date +%s a ten davate jako parametr
# u me je to /tmp/ppp-t
{ 
        if [ -r $1 ]; then
                CF_TS=$[`date +%s`-`cat $1`]
        else
                return 2
        fi

        CF_TM=$[$CF_TS/60]
        CF_TS=$[$CF_TS%60]
        CF_TH=$[$CF_TM/60]
        CF_TM=$[$CF_TM%60]
        CF_TD=$[$CF_TH/24]
        CF_TH=$[$CF_TH%24]

        export CF_CTIME="$CF_TD-$CF_TH-$CF_TM-$CF_TS"

        return 0
}

echo "Content-type: text/plain"
echo

if [ `route -n | grep ppp0 | wc -l` -eq 0 ]; then
        echo "Nejste pripojeni do internetu."
else
        CF_MY_IP="`ifconfig ppp0 | awk '/inet/ { print $2 }' | sed 's/.*://'`"
        CF_getCTime /tmp/ppp-t
        echo "Jste pripojeni do internetu."
        echo "Vase ip adresa je $CF_MY_IP."
        echo "Doba pripojeni je $CF_CTIME dnu-hodin-minut-sekund."
fi
exit 0


honza kuklik



Další informace o konferenci Linux