#!/usr/bin/perl # Created: # 24.1.2004 Sapan Bhatia if ($#ARGV!=2) { die "Usage: findsmb \n"; } else { $NET=$ARGV[0]; $TYPE=$ARGV[1]; $LOGFILE=$ARGV[2]; } sub getname { $ip=shift; open nmblookup,"nmblookup -A $ip |"; @name=; $next=0; for (@name) { if ($next) { m/\b(\w+)\b/; $nom=$1; last; } if (/$ip/) { $next=1; } } close nmblookup; return $nom; } sub getshares { $address=shift; print "Looking up address $address\n"; open smbclient,"smbclient -L $address -N |"; @sharelist=; for (@sharelist) { if (m/(\b.*\b)\s+Disk/) { push @shares,($1); } } close smbclient; return @shares; } open smbnet,"nmap -sP $NET 2>&1|"; @onlinehosts=; for (@onlinehosts) { if (m/\((\d+\.\d+\.\d+\.\d+)\)/) { push @ips,($1); } } close smbnet; unlink $LOGFILE; for $ip (@ips) { @shares=getshares($ip); $name=getname($ip); if (!-e "/nn/$name") { mkdir "/nn/$name"; } for (@shares) { #if (! -e "/nn/$name/\"$_\"") { mkdir "/nn/$name/$_"; #} sleep 0.5; print "Mounting directory $name,$_,$ip\n"; print "mount -t smbfs -o ip=$ip,guest \"//$name/$_\" \"/nn/$name/$_\""; system ("mount -t smbfs -o ip=$ip,guest \"//$name/$_\" \"/nn/$name/$_\""); print ("Looking for $TYPE files...\n"); system ("find \"/nn/$name/$_\" -name \\*.$TYPE >> $LOGFILE"); print "Unmounting..."; system ("umount \"/nn/$name/$_\""); } }