diff options
Diffstat (limited to 'packaging/SGI/findsmb')
-rwxr-xr-x | packaging/SGI/findsmb | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/packaging/SGI/findsmb b/packaging/SGI/findsmb deleted file mode 100755 index c71837e3757..00000000000 --- a/packaging/SGI/findsmb +++ /dev/null @@ -1,150 +0,0 @@ -#!/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/samba/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 lookup - -open(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 info - -print "\n *=DMB\n"; -print " +=LMB\n"; -print "IP 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 non group <00> name - - @name = grep(/<00> - /,@nmblookup); - $_ = @name[0]; - if (not $_) { -# try without the -r option - open(NMBLOOKUP,"$SAMBABIN/nmblookup -A $ip|") || - die("Can't get nmb name list.\n"); - @nmblookup = <NMBLOOKUP>; - close NMBLOOKUP; - @name = grep(/<00> - /,@nmblookup); - $_ = @name[0]; - } - /(\S+)/; - $name = $1; - - if (not $name) { # 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 name"; - } - if (length($name) > 15) { - $name = substr($name,0,15); - } -# do an smbclient command on the ip address - - open(SMB,"$SAMBABIN/smbclient -N -L '$ip' -I $ip -U% |") || - die("Can't do smbclient command.\n"); - @smb = <SMB>; - close SMB; - } else { # netbios name found - -# 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(16-length($name))."$master"."$_\n"; - - } -} - |