From cc4e6a900aafde4ab2a93c23b2eda70a973a2e6e Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Mon, 19 Apr 2021 09:12:24 +0200 Subject: [PATCH] s3:script: Remove findsmb from default installation This tool is the only client tool which requires perl. Distributions are removing perl from the default installation now. Also this is a wrapper around nmblookup which is obsolete in the AD world. However it might still be used by someone so move it just to examples/scripts/nmb/ Signed-off-by: Andreas Schneider Reviewed-by: Guenther Deschner Autobuild-User(master): Andreas Schneider Autobuild-Date(master): Mon Apr 19 14:37:04 UTC 2021 on sn-devel-184 --- docs-xml/manpages/samba.7.xml | 7 --- docs-xml/wscript_build | 1 - .../scripts/nmb/findsmb | 23 ++++---- .../scripts/nmb}/findsmb.1.xml | 54 +++++++++---------- source3/script/wscript_build | 13 ----- 5 files changed, 38 insertions(+), 60 deletions(-) rename source3/script/findsmb.in => examples/scripts/nmb/findsmb (95%) rename {docs-xml/manpages => examples/scripts/nmb}/findsmb.1.xml (82%) diff --git a/docs-xml/manpages/samba.7.xml b/docs-xml/manpages/samba.7.xml index 836ed23619f..627ba636802 100644 --- a/docs-xml/manpages/samba.7.xml +++ b/docs-xml/manpages/samba.7.xml @@ -186,13 +186,6 @@ can be used to maintain the local user database on a Samba server. - - findsmb - 1 - The findsmb command - can be used to find SMB servers on the local network. - - net 8 diff --git a/docs-xml/wscript_build b/docs-xml/wscript_build index 37094147e0b..c2986ed6cd5 100644 --- a/docs-xml/wscript_build +++ b/docs-xml/wscript_build @@ -5,7 +5,6 @@ manpages=''' manpages/cifsdd.8 manpages/dbwrap_tool.1 manpages/eventlogadm.8 - manpages/findsmb.1 manpages/idmap_ad.8 manpages/idmap_autorid.8 manpages/idmap_hash.8 diff --git a/source3/script/findsmb.in b/examples/scripts/nmb/findsmb similarity index 95% rename from source3/script/findsmb.in rename to examples/scripts/nmb/findsmb index 38a6e2a1604..7c58917f55a 100755 --- a/source3/script/findsmb.in +++ b/examples/scripts/nmb/findsmb @@ -1,4 +1,4 @@ -#!@PERL@ +#!/usr/bin/env 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 @@ -13,14 +13,14 @@ # 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. -# +# # Options: # # -d|-D enable debug # -r add -r option to nmblookup when finding netbios name # -$SAMBABIN = "@BINDIR@"; +$SAMBABIN = "/usr/bin"; for ($i = 0; $i < 2; $i++) { # test for -d and -r options $_ = shift; @@ -38,7 +38,7 @@ if ($_) { # set broadcast address if it was specified ###################################################################### # do numeric sort on last field of IP address -sub ipsort +sub ipsort { @t1 = split(/\./,$a); @t2 = split(/\./,$b); @@ -48,7 +48,7 @@ sub ipsort # look for all machines that respond to a name lookup -open(NMBLOOKUP,"$SAMBABIN/nmblookup $BCAST '*' --debuglevel=0|") || +open(NMBLOOKUP,"$SAMBABIN/nmblookup $BCAST '*' --debuglevel=0|") || die("Can't run nmblookup '*'.\n"); # get rid of all lines that are not a response IP address, @@ -68,10 +68,10 @@ foreach $ip (@ipaddrs) # loop through each IP address found # find the netbios names registered by each machine - open(NMBLOOKUP,"$SAMBABIN/nmblookup $R_OPTION -A $ip --debuglevel=0|") || + open(NMBLOOKUP,"$SAMBABIN/nmblookup $R_OPTION -A $ip --debuglevel=0|") || die("Can't get nmb name list.\n"); @nmblookup = ; - close NMBLOOKUP; + close NMBLOOKUP; # get the first <00> name @@ -80,7 +80,7 @@ foreach $ip (@ipaddrs) # loop through each IP address found if ($_) { # we have a netbios name if (/GROUP/) { # is it a group name - ($name, $aliases, $type, $length, @addresses) = + ($name, $aliases, $type, $length, @addresses) = gethostbyaddr(pack('C4',split('\.',$ip)),2); if (! $name) { # could not get name $name = "unknown nis name"; @@ -92,7 +92,7 @@ foreach $ip (@ipaddrs) # loop through each IP address found /(.{1,15})\s+<00>\s+/; $name = $1; $name =~ s/^\s+//g; - } + } # do an smbclient command on the netbios name. @@ -146,7 +146,7 @@ foreach $ip (@ipaddrs) # loop through each IP address found } else { # no netbios name found # try getting the host name - ($name, $aliases, $type, $length, @addresses) = + ($name, $aliases, $type, $length, @addresses) = gethostbyaddr(pack('C4',split('\.',$ip)),2); if (! $name) { # could not get name $name = "unknown nis name"; @@ -157,5 +157,4 @@ foreach $ip (@ipaddrs) # loop through each IP address found } print "$ip".' 'x(16-length($ip))."$name\n"; } -} - +} diff --git a/docs-xml/manpages/findsmb.1.xml b/examples/scripts/nmb/findsmb.1.xml similarity index 82% rename from docs-xml/manpages/findsmb.1.xml rename to examples/scripts/nmb/findsmb.1.xml index 63233e218e5..6b35410d84d 100644 --- a/docs-xml/manpages/findsmb.1.xml +++ b/examples/scripts/nmb/findsmb.1.xml @@ -13,7 +13,7 @@ findsmb - list info about machines that respond to SMB + list info about machines that respond to SMB name queries on a subnet @@ -26,19 +26,19 @@ DESCRIPTION - + This perl script is part of the samba7 suite. findsmb is a perl script that - prints out several pieces of information about machines + prints out several pieces of information about machines on a subnet that respond to SMB name query requests. It uses nmblookup1 and smbclient1 to obtain this information. - + OPTIONS @@ -49,16 +49,16 @@ Controls whether findsmb takes bugs in Windows95 into account when trying to find a Netbios name registered of the remote machine. This option is disabled by default - because it is specific to Windows 95 and Windows 95 machines only. + because it is specific to Windows 95 and Windows 95 machines only. If set, nmblookup1 will be called with -B option. subnet broadcast address Without this option, findsmb - will probe the subnet of the machine where + will probe the subnet of the machine where findsmb1 - is run. This value is passed to + is run. This value is passed to nmblookup1 as part of the -B option. @@ -68,38 +68,38 @@ EXAMPLES - The output of findsmb lists the following - information for all machines that respond to the initial - nmblookup for any name: IP address, NetBIOS name, + The output of findsmb lists the following + information for all machines that respond to the initial + nmblookup for any name: IP address, NetBIOS name, Workgroup name, operating system, and SMB server version. - 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. - Machines that are running Windows for Workgroups, Windows 95 or - Windows 98 will - not show any information about the operating system or server + 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. + Machines that are running Windows for Workgroups, Windows 95 or + Windows 98 will + not show any information about the operating system or server version. The command with -r option must be run on a system without nmbd8 - running. + running. - If nmbd is running on the system, you will - only get the IP address and the DNS name of the machine. To - get proper responses from Windows 95 and Windows 98 machines, + If nmbd is running on the system, you will + only get the IP address and the DNS name of the machine. To + get proper responses from Windows 95 and Windows 98 machines, the command must be run as root and with -r option on a machine without nmbd running. - For example, running findsmb + For example, running findsmb without -r option set would yield output similar to the following -IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION ---------------------------------------------------------------------- +IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION +--------------------------------------------------------------------- 192.168.35.10 MINESET-TEST1 [DMVENGR] 192.168.35.55 LINUXBOX *[MYGROUP] [Unix] [Samba 2.0.6] 192.168.35.56 HERBNT2 [HERB-NT] @@ -135,10 +135,10 @@ IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION AUTHOR - - The original Samba software and related utilities + + The original Samba software and related utilities were created by Andrew Tridgell. Samba is now developed - by the Samba Team as an Open Source project similar + by the Samba Team as an Open Source project similar to the way the Linux kernel is developed. diff --git a/source3/script/wscript_build b/source3/script/wscript_build index 40ecdd7ef50..56c904fe349 100644 --- a/source3/script/wscript_build +++ b/source3/script/wscript_build @@ -10,16 +10,3 @@ bld.INSTALL_FILES('${BINDIR}', bld.SAMBA_SCRIPT('smbaddshare', pattern='smbaddshare', installdir='.') bld.SAMBA_SCRIPT('smbchangeshare', pattern='smbchangeshare', installdir='.') bld.SAMBA_SCRIPT('smbdeleteshare', pattern='smbdeleteshare', installdir='.') - -sed_expr1 = 's#@PERL@#/usr/bin/env perl#' -sed_expr2 = 's#@BINDIR@#${BINDIR}#' - -bld.SAMBA_GENERATOR('findsmb-script', - source='findsmb.in', - target='findsmb', - rule='sed -e "%s" -e "%s" ${SRC} > ${TGT}' % (sed_expr1, sed_expr2)) - -bld.INSTALL_FILES('${BINDIR}', - 'findsmb', - destname='findsmb', - chmod=MODE_755) -- 2.47.3