⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 persistent_connection

📁 unix and linux net driver
💻
字号:
#! /usr/bin/perl# ip-down -- executed by pppd on connection death## This particular implementation of ip-down attempts to re-establish# the ppp connection.  It does this by first forking and having the# parent die (returning control to the invoking pppd for final# cleanup).## The child waits until the specified port (pppd passes the path to# the port's device as argument 2) is available and launches pppd (or# whatever is specfied by $PATH_pppd.## This script requires "syslog.pl" (included with perl).  Because of# this, it also requires "syslog.ph";  "syslog.ph" can be# manufactured using the h2ph script included with the perl# distribution.  Under NeXTSTEP, one can create syslog.ph by:##        h2ph < /usr/include/bsd/sys/syslog.h > syslog.ph## 'syslog.ph' should either be copied into your machines perl library# (wherever syslog.pl resides), or you should add wherever syslog.ph# resides to Perl's library search path.## Removing all references to syslog (including openlog() and# closelog()) will also work, but will render this script's execution# completely silent.## By default, this script logs to the default target for ppp's logs --# LOCAL2.## hacqued by: <bbum@friday.com>, jan 30 1995## Please send any changes/improvements to <bbum@friday.com>.  And# please try not to laugh at this code... or, at least, tell me why# you are laughing so I won't make the same mistakes twice.# ABSOLUTE path to PPP daemon (or whatever you want executed after the# port becomes available).$PATH_pppd = "/usr/local/ppp/bin/pppd";# number of seconds to sleep between checking for port availability$lock_sleep = 2;require "syslog.pl";FORK: {    if ($pid = fork) {	# this is the parent.  It must die so the old pppd can 	# clean-up and exit.	exit;    } elsif ($! =~ /No more process/) {	# oops! ran out of processes.  This is supposed to be a 	# recoverable error, so sleep and try again.	sleep 5;	redo FORK;	    } elsif (!defined($pid)) {	# fork error -- log it and die.	&openlog("pppd/ip-down", 'cons,pid', LOG_LOCAL2);	&syslog('warning',		"Fork() error '$!'");	&closelog;	die "can't fork: $!\n";    }}# everything from here down is the child.&openlog("pppd/ip-down", 'cons,pid', LOG_LOCAL2);if ( ! @ARGV ) {    # no arguments -- exec specified thing (assume the process    # being called has a clue about what port it should use)    &syslog('info', "No device specified. Executing '$PATH_pppd'.");    &closelog;    exec $PATH_pppd;    ## NOT REACHED: exec never returns}# (assume-- it will if pppd starts ip-down)# ARGV contains:#          interface-name tty-device speed local-IP-address#          remote-IP-address($interface_name, $tty_device, $speed, $local_IP_address, $remote_IP_address) = @ARGV;# find the raw device name@path = split ('/', $tty_device);$device = pop @path;# Generate path to lock file -- assumes NeXT style device locking$lock = "/usr/spool/uucp/LCK/LCK..$device";# log some info.&syslog('info',	"Reconnecting '$interface_name' ($local_IP_address:$remote_IP_address) through '$tty_device' at '$speed' baud.");# check for lockif ( -e $lock) {    &syslog('info',	    "'$device' locked. Waiting for unlock.");    # loop until unlocked    while ( -e $lock ) {	sleep $lock_sleep;    }}#### port available -- log and execute&syslog('info',	"Port '$device' available. Launching '$PATH_pppd'");&closelog;exec $PATH_pppd;### NOT REACHED

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -