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

📄 findsmb

📁 共享Unix的资源(磁盘或打印机等)给Windows使用的程序
💻
字号:
#!/usr/bin/perl## Prints info on all smb responding machines on a subnet.# This script needs to be run on a machine without nmbd running and be# run as root to get correct info from WIN95 clients.## syntax:#    findsmb [subnet broadcast address]## with no agrument it will list machines on the current subnet## There will be a "+" in front of the workgroup name for machines that are# local master browsers for that workgroup. There will be an "*" in front# of the workgroup name for machines that are the domain master browser for# that workgroup.#$SAMBABIN = "/usr/bin";for ($i = 0; $i < 2; $i++) {	# test for -d option and broadcast address  $_ = shift;  if (m/-d|-D/) {    $DEBUG = 1;  } else  {    if ($_) {      $BCAST = "-B $_";    }  }}sub ipsort			# do numeric sort on last field of IP address{  @t1 = split(/\./,$a);  @t2 = split(/\./,$b);  @t1[3] <=> @t2[3];}# look for all machines that respond to a name lookupopen(NMBLOOKUP,"$SAMBABIN/nmblookup $BCAST '*'|") ||   die("Can't run nmblookup '*'.\n");# get rid of all lines that are not a response IP address,# strip everything but IP address and sort by last field in address@ipaddrs = sort ipsort grep(s/ \*<00>.*$//,<NMBLOOKUP>);# print header infoprint "\nIP ADDR         NETBIOS NAME   WORKGROUP/OS/VERSION $BCAST\n";print "---------------------------------------------------------------------\n";foreach $ip (@ipaddrs)		# loop through each IP address found{  $ip =~ s/\n//;		# strip newline from IP address# find the netbios names registered by each machine  open(NMBLOOKUP,"$SAMBABIN/nmblookup -r -A $ip|") || 	die("Can't get nmb name list.\n");  @nmblookup = <NMBLOOKUP>;  close NMBLOOKUP;# get the first <00> name  @name = grep(/<00>/,@nmblookup);  $_ = @name[0];  if ($_) {                     # we have a netbios name    if (/GROUP/) {		# is it a group name	($name, $aliases, $type, $length, @addresses) = 	gethostbyaddr(pack('C4',split('\.',$ip)),2);	if (! $name) {			# could not get name	    $name = "unknown nis name";	}    } else {	/(\S+)/;	$name = $1;    }# do an smbclient command on the netbios name.    open(SMB,"$SAMBABIN/smbclient -N -L $name -I $ip -U% |") ||	die("Can't do smbclient command.\n");    @smb = <SMB>;    close SMB;    if ($DEBUG) {		# if -d flag print results of nmblookup and smbclient      print "===============================================================\n";      print @nmblookup;      print @smb;    }# look for the OS= string    @info = grep(/OS=/,@smb);    $_ = @info[0];    if ($_) {				# we found response      s/Domain=|OS=|Server=|\n//g;	# strip out descriptions to make line shorter    } else {				# no OS= string in response (WIN95 client)# for WIN95 clients get workgroup name from nmblookup response      @name = grep(/<00> - <GROUP>/,@nmblookup);      $_ = @name[0];      if ($_) {        /(\S+)/;        $_ = "[$1]";      } else {	$_ = "Unknown Workgroup";      }    }# see if machine registered a local master browser name    if (grep(/<1d>/,@nmblookup)) {      $master = '+';			# indicate local master browser      if (grep(/<1b>/,@nmblookup)) {	# how about domain master browser?        $master = '*';			# indicate domain master browser      }    } else {      $master = ' ';			# not a browse master    }# line up info in 3 columns    print "$ip".' 'x(16-length($ip))."$name".' 'x(14-length($name))."$master"."$_\n";  } else {				# no netbios name found# try getting the host name    ($name, $aliases, $type, $length, @addresses) =       gethostbyaddr(pack('C4',split('\.',$ip)),2);    if (! $name) {			# could not get name      $name = "unknown nis name";    }    if ($DEBUG) {			# if -d flag print results of nmblookup      print "===============================================================\n";      print @nmblookup;    }    print "$ip".' 'x(16-length($ip))."$name\n";  }} 

⌨️ 快捷键说明

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