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