BSD a pevna linka

Dan Lukes dan at sofia.fio.cz
Mon Aug 25 12:29:32 CEST 1997


	Omlouvam se, meli jsme nejake problemy v praci a tak jsem to nejak
nezvladl.

Takze, toto jsou /etc/ppp/options z obou dvou koncu linky

-----------------------------        -----------------------------
194.212.227.5:194.212.227.6          194.212.227.5:194.212.227.6
netmask 255.255.255.252              netmask 255.255.255.252
dns1 194.212.227.17
modem                                modem
crtscts                              crtsrts
bsdcomp 15                           bsdcomp 15
persist                              persist
lcp-max-configure 18                 lcp-max-configure 18
lcp-max-failure   18                 lcp-max-failure   18
-----------------------------        -----------------------------

Prvni tri radky jsou asi jasne. Pochopitelne, IP adresy musite dat vlastni,
nebo rezervovane. Dalsi dva se tykaji pripojeneho zarizeni -
- modem s hardwarovym rizenim toku. Pod tim je parametr tykajici se komprese
prenasenych dat. "persist" rika, ze po rozpadu spojeni se program nema
ukoncit, ale ma se pokusit znovunavazat spojeni. lcp-max-* parametry naopak
brani programu aby se o spojeni pokousel prilis dlouho. Muze se totiz stat,
ze program se vuci druhe strane dostane do stavu, ze ktereho se neni schopen
sam vzpamatovat a pak je lepsi kdyz se ukonci.

Samotne spousteni je zajisteno pomoci radky v /etc/ttys:
/dev/cuaa0 "/usr/sbin/pppd 115200" unknown on insecure

Umisteni do /etc/ttys ma tu vyhodu, ze pri ukonceni programu (z jakehokoliv
duvodu) je pppd okamzite restartovan systemem (init).

Zbyva se vyporadat se situaci, kdy neni spojeni, ale pppd z jakehokoliv
duvodu neukoncilo spoji cinnost. To u me zajistuje script spousteny cronem
kazde dve minuty. Script se spousti se dvema parametry - cislem portu (to
cislo na konci /dev/cuaa?, casto 0) a IP "protejsi stanice":

-----------------------------------------------------------------------
PIF=$1
PIP=$2

if ( ! ps -ax | grep -v -e "grep" | grep -e "pppd 115200 /dev/cuaa$PIF" >/dev/null); then
	stty 115200 </dev/cuaa$PIF >/dev/null
	/usr/sbin/pppd 115200 /dev/cuaa$PIF
else
	OLDIF=2
	if [ -f /var/run/if.ppp$PIF.down ]; then
		OLDIF=1
	fi
	if [ -f /var/run/if.ppp$PIF.up ]; then
		OLDIF=0
	fi

	IFDOWN=0

	date >/tmp/if.ppp$PIF.stat

	if (! ( /sbin/ping -c 1 $PIP >/dev/null 2>&1 || /sbin/ping -c 3 $PIP >/dev/null 2>&1 ) ); then
		if (! /sbin/ping -c 12 $PIP >>/tmp/if.ppp$PIF.stat 2>/dev/null ) ; then
			if [ -f /var/run/ppp$PIF.pid ]; then
				/bin/kill $(cat /var/run/ppp$PIF.pid) >>/tmp/if.ppp$PIF.stat
	                        /sbin/ping -c 2 127.0.0.1 >/dev/null 2>&1
				if [ -f /var/run/ppp$PIF.pid ]; then
					/bin/kill -9 $(cat /var/run/ppp$PIF.pid) >>/tmp/if.ppp$PIF.stat
					rm /var/run/ppp$PIF.pid
				fi
			fi
			IFDOWN=1
		fi
	fi 
	
	if [ "$OLDIF" != "$IFDOWN" ]; then
		if [ "$IFDOWN" = 0 ]; then
			mail -s "Interface ppp$PIF is up!" root </tmp/if.ppp$PIF.stat
			logger -i -p daemon.err -t pppdstat "ppp$PIF: Interface is up!" >/dev/null
			rm /var/run/if.ppp$PIF.down >/dev/null
			date >/var/run/if.ppp$PIF.up
		fi
		if [ "$IFDOWN" = 1 ]; then
			mail -s "Interface ppp$PIF is DOWN!" root </tmp/if.ppp$PIF.stat
			logger -i -p daemon.err -t pppdstat "ppp$PIF: Interface is down!" >/dev/null
			rm /var/run/if.ppp$PIF.up >/dev/null
			date >/var/run/if.ppp$PIF.down
		fi
		rm /tmp/if.ppp$PIF.stat
	fi
fi
----------------------------------------------------------------------------

Pokud budete chtit popis co dela ktera cast toho scriptu, i to mohu dodat.

							S pozdravem
								Dan



More information about the Users-l mailing list