<?xml version="1.0" encoding="windows-1252"?>
<node id="1015129" title="how to write thread which was multithreaded port scan scripts for nmap" created="2013-01-24 04:48:19" updated="2013-01-24 04:48:19">
<type id="115">
perlquestion</type>
<author id="961">
Anonymous Monk</author>
<data>
<field name="doctext">
&lt;p&gt; someone one can help me finished it,i dont know use thread to this scripts.above is the scripts


i have a lot of domain and need to scan domain that services port which  had opend 
now use nmap to scan
domain save in  mssql2005,has a table "psinfo" it has two row ,one is "domainname",another is "psinfo"


ex:
domainname   	port
www.google.com   80
www.yahoo.com 		80
www.facebook.com	80&amp;#65292;443


&lt;/p&gt; 
&lt;code&gt;

#!/usr/bin/perl
use strict;
use warnings;
use DBI;

my $dsn = 'DBI:Sybase:server=sql1';
my $dbh = DBI-&gt;connect($dsn, "test", 'test123');
die "unable to connect to server $DBI::errstr" unless $dbh;
$dbh-&gt;do("use portscan");

my $query = "SELECT domainname FROM psinfo";
my $sth = $dbh-&gt;prepare ($query) or die "prepare failed\n";
$sth-&gt;execute() or die "unable to execute query $query   error $DBI::errstr";
$sth-&gt;finish;
#my $rows = $sth-&gt;rows ;
#print "$row rows returned by query\n";

my $line;
my @list;
my $myport;
while ($line = $sth-&gt;fetchrow_array()) {
    my @list =`nmap $line`;
	foreach(@list){	  
		if($_=~/open/g){
			$_ =~ s/\/.*//g;
			if($myport){$myport=$myport.','.$_;chomp $myport;} 
			else{$myport=$_; chomp $myport}
		}
	}
print "$myport\n";  #for test
$sth = $dbh-&gt;prepare("update psinfo set port=\'$myport\' where domainname=\'$line\'");
$sth-&gt;execute() or die "unable to execute update line where name is $line! error $DBI::errstr";
$sth-&gt;finish;
}


&lt;/code&gt;</field>
<field name="reputation">
3</field>
</data>
</node>
