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

📄 nfs_server.cgi

📁 Unix下基于Web的管理工具
💻 CGI
字号:
#!/usr/local/bin/perl# nfs_server.cgi# Called in a pop-up javascript window to display a list of known NFS# servers, generated by broadcasting on the NFS portrequire './mount-lib.pl';use Socket;&header();print <<EOF;<script>function choose(f){ifield.value = f;window.close();}</script>EOFprint "<title>Choose NFS Server..</title>\n";# send NFS null procedure call to broadcast address, and wait for# 2 seconds for all replies$msg = pack("NNNNNNNNNN",	time(),	# xid	0,	# CALL	2,	# RPC version 2	100003,	# nfs program	2,	# nfs version	0,	# null procedure	0, 0,	# no authority	0, 0,	# no credentials	);socket(SOCK, PF_INET, SOCK_DGRAM, getprotobyname("udp"));setsockopt(SOCK, SOL_SOCKET, SO_BROADCAST, pack("l", 1));send(SOCK, $msg, 0, sockaddr_in(2049, inet_aton(&broadcast_addr())));$tmstart = time();while(time()-$tmstart < 2) {	$rin = '';	vec($rin, fileno(SOCK), 1) = 1;	if (select($rout = $rin, undef, undef, 1)) {		$from = recv(SOCK, $buf, 1024, 0);		($fromport, $fromaddr) = sockaddr_in($from);		$fromip = inet_ntoa($fromaddr);		if ($fromip !~ /\.(255|0)$/ && !$already{$fromip}++) {			push(@fromip, $fromip);			push(@fromaddr, $fromaddr);			}		}	}if (@fromip) {	print "<b>Select an NFS server to mount from..</b><br>\n";	print "<table border width=100%>\n";	print "<tr $tb> <td><b>IP Address</b></td> ",	      "<td><b>Hostname</b></td> </tr>\n";	for($i=0; $i<@fromip; $i++) {		$fromhost = gethostbyaddr($fromaddr[$i], AF_INET);		printf "<tr $cb> <td><a href=\"\" onClick='choose(\"%s\"); ".		       "return false'>$fromip[$i]</a></td>\n",			$fromhost ? $fromhost : $fromip[$i];		printf "<td>%s</td> </tr>\n",			$fromhost ? $fromhost : "<br>";		}	print "</table>\n";	}else { print "<b>No local NFS servers found</b>.<p>\n"; }

⌨️ 快捷键说明

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