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

📄 test_network

📁 pcmcia source code
💻
字号:
#!/usr/bin/perl$| = 1; # Don't buffer outputsub indent{    my($str) = @_;    $str =~ s/\n(.)/\n  \1/g;    return "  $str";}sub irq_count{    my($irq) = @_;    my($s) = `grep " $irq:" /proc/interrupts`;    return $1 if ($s =~ /^ +\d+:\s+(\d+)/);}sub cvt_addr{    my($addr) = @_;    $addr =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/;    return ($1<<24)+($2<<16)+($3<<8)+$4;}sub checkout{    my($dev,$driver,$card) = @_;        print "\nChecking network interface $dev ($driver driver):\n\n";        $log = `dmesg | grep $dev | tail`;    if ($log) {	print "  Kernel messages for $dev:\n", indent($log), "\n";    }        $conf = `/sbin/ifconfig $dev`;    $conf =~ s/\n$//;    print "  Current ifconfig settings:\n", indent($conf), "\n";    @line = split(/\n/, $conf);    ($x,$ipaddr,$bcast,$netmask) = split(/ [a-zA-Z ]+:/, $line[1]);    $ip = cvt_addr($ipaddr);    $bc = cvt_addr($bcast);    $nm = cvt_addr($netmask);    if ($conf !~ /Mask/) {	print "  The interface is not configured!\n";    } elsif ($conf !~ /RUNNING/) {	print "  The interface is not running!\n";    } else {	print "  The interface is configured and running.\n";	if ((($bc | $nm) != 0xffffffff) || (($ip & $nm) != ($bc & $nm))) {	    print "  The broadcast address and netmask are inconsistent!\n";	}    }    return if ($conf !~ /RUNNING/);    $irq = $1 if ($conf =~ /Interrupt:(\d+)/);    @rx = split(/ [a-zA-Z ]+:/, $1) if ($conf =~ /RX(.*)\n/);    @tx = split(/ [a-zA-Z ]+:/, $1) if ($conf =~ /TX(.*)\n/);    shift(@rx); shift(@tx);    $rx_ok = ($rx[0] > 5*($rx[1]+$rx[2]+$rx[3]+$rx[4])+1);    $tx_ok = ($tx[0] > 5*($tx[1]+$tx[2]+$tx[3]+$tx[4])+1);    $rx_any = $rx[0]+$rx[1]+$rx[2]+$rx[3]+$rx[4];    $tx_any = $tx[0]+$rx[1]+$rx[2]+$rx[3]+$rx[4];    if ($rx_ok && $tx_ok) {	print "  RX and TX traffic both look ok.\n";    } elsif ($rx_ok) {	print "  RX looks ok, but there seems to be a TX problem.\n";    } elsif ($tx_ok) {	print "  TX looks ok, but there seems to be an RX problem.\n";    } elsif ($rx_err+$tx_err > 1) {	print "  RX and TX traffic both look bad.\n";    } else {	print "  There hasn't been any traffic on this interface!\n";    }    $addr = ""; $dflt = "";    open(RT, "route -n |");    while (<RT>) {	chop; @s = split;	$dflt = $s[7] if ($s[0] eq "0.0.0.0");	next if (!/$dev/);	if ($s[1] ne "0.0.0.0") {	    print "\n  There is a route to a gateway at $s[1].\n";	    if ($s[1] eq $ipaddr) {		print "  Your gateway address is set to your IP address!\n";	    } else {		$addr = $s[1];	    }	    last;	}    }    close(RT);    if ($addr eq "") {	if ($dflt ne "") {	    print "\n  Your default route is pointed to interface $dflt.\n";	} else {	    print "\n  You have not configured a gateway or default route.\n";	}	while (1) {	    print "\n  Enter a numeric IP address to ping: ";	    $addr = <STDIN>; chop($addr);	    if ($addr !~ /^\d+\.\d+\.\d+\.\d+$/) {		print "  That is not a valid address!\n";	    } elsif ($addr eq $ipaddr) {		print "  Sorry, pinging yourself is not informative!\n";	    } elsif (system("/sbin/ifuser $dev $addr")) {		print "  There is no route to $addr through $dev!\n";	    } else {		last;	    }	}    }    print "\n  Pinging $addr ...";    $start = irq_count($irq);    open(PING, "ping -c 1 $addr|");    $rx = 0;    while (<PING>) {	if (/(\d) packets received/) {	    $rx = $1;	    last;	}    }    close(PING);    $stop = irq_count($irq);    print (($rx) ? " response received!\n" : " timed out!\n");    print "  The device interrupt ";    print (($stop - $start) ? "seems" : "does not seem");    print " to be incrementing normally.\n";}foreach $f ("/var/state/pcmcia/stab", "/var/lib/pcmcia/stab",	    "/var/run/stab") {    if (-f $f) {	$stab = $f; last;    }}if (!$stab) {    print "Socket status file (stab) not found!  Is PCMCIA running??\n";    exit 1;}$net = `cat /etc/pcmcia/network 2>/dev/null`;$opts = `cat /etc/pcmcia/network.opts`;$rh = "/etc/sysconfig/network-scripts/ifcfg-eth0";print "PCMCIA network settings are coming from ";if ($net =~ /ifup / || $opts =~ /ifup /) {    print "linuxconf.\n";    print "  $rh does not exist!\n" if (!-e $rh);} else {    print "/etc/pcmcia/network.opts.\n";    if (!$opts) {	print "    /etc/pcmcia/network.opts is empty??\n";    } elsif (($opts !~ /\w+=[^\n]*y/) && ($opts !~ /IPADDR[^\n]*\d/)) {	print "    /etc/pcmcia/network.opts is not configured??\n";    }    print "  $rh also exists??\n" if (-e $rh);}$ns = 0;open(IN, $stab);while ($_ = <IN>) {    chop;    if (/^Socket (\d+): (.*)/) {	($sock,$card) = ($1,$2);    } else {	@f = split;	next if ($f[1] ne "network");	$ns++;	checkout($f[4], $f[2], $card);    }}close(IN);exit 0 if ($ns);print "No PCMCIA network interfaces are configured.\n";$s = `cat $stab`;open(IN, "/sbin/cardctl ident |");while (<IN>) {    $sock = $1 if (/^Socket (\d+)/);    if (/function: 6/) {	print "\nThere is a network device in socket $sock:\n";	$tag = $1 if ($s =~ /Socket $sock: ([^\n]+)/);	print "  $tag\n";    }}close(IN);$log = `dmesg | grep '_c[bs]:' | tail`;print "\nKernel messages from client drivers:\n", indent($log) if ($log);

⌨️ 快捷键说明

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