[ LUGOS ] chat skripte za PPP

Andrej Komelj andrej.komelj na guest.arnes.si
Tor Mar 24 09:57:59 CET 1998


Zadnjič sem napisal shell script za priključitev na ARNES (klicanje na
več številk, detekcija BUSY signala, RINGING, ...). Če ima kdo kakšne
ideje za izboljšavo ali popravke, naj mi sporoči. Upam, da veste, kako
jo povežete s pppd-jem. Ne pozabite še na obvezne spremembe (modem init
string, telefonske številke, username, geslo, ...)

Aja, s skripto počnite, kar pač želite.

:<-----:<-----:<-----:<-----:<
#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin

# pavza med dvema klicema
DELAY=5s

# največ BUSY odgovorov
BUSY_MAX=0

# največ RINGING odgovorov
RINGING_MAX=3

# nastavitveni niz za modem
INITSTRING='\rAT&FM0X7*E1'

# uporabniško ime in geslo
USERNAME=USERNAME
PASSWORD=PASSWORD

# telefonske številke ISP-ja
NUMBER[1]="321047"
NUMBER[2]="??????"
NUMBER[3]="??????"
# dolžina polja (število telefonskih številk)
NUMBER[0]=3

# številka, ki sem jo pravkar klical
N=0

# funkcija poskrbi za nastavitve modema
function init()
{
	chat -V -t5 ABORT "ERROR" ABORT "NO DIALTONE" ABORT "BUSY" ABORT "NO CARRIER" "" ${INITSTRING} "OK"
	if [ $? != 0 ]; then exit 1; fi
	return 0
}

# funkcija zavrti številko
function dial()
{
	((N=${N}+1))
	if [ ${N} -gt ${NUMBER[0]} ]; then N=1; fi
	chat -V "" ATDT${NUMBER[${N}]}
}

# funkcija poskrbi za povezavo modemov
function connect()
{
	busy=0
	ringing=0
	while true; do
		chat -V -t60 ABORT "ERROR" ABORT "NO DIALTONE" ABORT "BUSY" ABORT "NO CARRIER" ABORT "RINGING" "CONNECT"
		response=$?
		case ${response} in
			### CONNECT
			0)	return 0 ;;
			### execution error
			1 | 2)	exit 1 ;;
			### timeout
			3)	exit 1 ;;
			### ERROR
			4)	exit 1 ;;
			### NO DIALTONE
			5)	sleep ${DELAY} ; dial ;;
			### BUSY
			6)
				((busy=${busy}+1))
				if [ ${BUSY_MAX} != 0 ] && [ ${busy} = ${BUSY_MAX} ]; then exit 1; fi
				sleep ${DELAY}
				dial
				;;
			### NO CARRIER
			7)	sleep ${DELAY} ; dial ;;
			### RINGING
			8)
				((ringing=${ringing}+1))
				if [ ${RINGING_MAX} != 0 ] && [ ${ringing} = ${RINGING_MAX} ]; then
					ringing=0
					chat -V "" "" "NO CARRIER"
					sleep ${DELAY}
					dial
				fi
				;;
			*)	exit $response ;;
		esac
	done
}

# funkcija se prijavi na ISP
function login()
{
	chat -V -t20 ABORT "NO CARRIER" "sername:--sername:" ${USERNAME} "assword:" ${PASSWORD}
	if [ $? != 0 ]; then
		chat -V "" "+++" "OK" "ATH" "OK"
		exit 1
	fi
	return 0
}

# glavni del skripte
init
dial
connect
login

:<-----:<-----:<-----:<-----:<

-- 
Kome.




Dodatne informacije o seznamu Starilist