2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-05-29 09:13:08 +00:00

move get_nmapversion() to Utils.pm

This commit is contained in:
Casandra Qiu 2016-05-31 10:56:15 -04:00
parent be2e49a632
commit 1a4a64644e
3 changed files with 28 additions and 34 deletions

View File

@ -4690,4 +4690,26 @@ sub is_process_exists{
return 0;
}
#--------------------------------------------------------------------------------
=head3 get_nmapversion
for nmap version 5.10 above, the sP option changed to sn.
the output of some commands also have differents.
example: for snmp_scan option,
version 4.75 has output "Host 10.4.25.1 appears to be up ... good." but
for version 6.40, it has output "Discovered open port 161/udp on 10.4.25.1"
Returns:
result: version of nmap on the system
=cut
#--------------------------------------------------------------------------------
sub get_nmapversion {
my $nmap_version;
my $ccmd = "nmap -V | grep version";
my $result = xCAT::Utils->runcmd($ccmd, 0);
my @version_array = split / /, $result;
$nmap_version = $version_array[2];
return $nmap_version;
}
1;

View File

@ -457,15 +457,12 @@ sub scan_process{
###########################################################
if ( $method eq "nmap" ) {
#check nmap version first
my $ccmd = "$nmap_path -V | grep version";
my $version_result = xCAT::Utils->runcmd($ccmd, 0);
my @version_array = split / /, $version_result;
my $nmap_version = $version_array[2];
my $nmap_version = xCAT::Utils->get_nmapversion();
# the output of nmap is different for version under 5.10
if (xCAT::Utils->version_cmp($nmap_version,"5.10") < 0) {
$bcmd = join(" ",$nmap_path," -sP -n $range | grep \"appears to be up\" |cut -d ' ' -f2 |tr -s '\n' ' ' ");
} else {
$bcmd = join(" ",$nmap_path," -sn -n $range | grep \"Nmap scan report\" |cut -d ' ' -f5 |tr -s '\n' ' ' ");
$bcmd = join(" ",$nmap_path," -sn -n $range | grep -B1 up | grep \"Nmap scan report\" |cut -d ' ' -f5 |tr -s '\n' ' ' ");
}
$ip_list = xCAT::Utils->runcmd("$bcmd", -1);

View File

@ -651,7 +651,7 @@ sub nmap_scan {
}
};
my $nmap_version = get_nmapversion($request);
my $nmap_version = xCAT::Utils->get_nmapversion();
if (xCAT::Utils->version_cmp($nmap_version,"5.10") < 0) {
$ccmd = "/usr/bin/nmap -sP -oX - @$ranges";
} else {
@ -828,8 +828,8 @@ sub snmp_scan {
#use nmap to find if snmp port is enabled
# only open port will be scan
my $nmap_version = get_nmapversion($request);
if (xCAT::Utils->version_cmp($nmap_version,"5.10") <= 0) {
my $nmap_version = xCAT::Utils->get_nmapversion();
if (xCAT::Utils->version_cmp($nmap_version,"5.10") < 0) {
$ccmd = "/usr/bin/nmap -P0 -v -sU -p 161 -oA snmp_scan @$ranges | grep up | grep good ";
} else {
$ccmd = "/usr/bin/nmap -P0 -v -sU -p 161 -oA snmp_scan @$ranges | grep 'open port 161' ";
@ -856,7 +856,7 @@ sub snmp_scan {
foreach my $line (@lines) {
my @array = split / /, $line;
my $ip;
if (xCAT::Utils->version_cmp($nmap_version,"4.75") <= 0) {
if (xCAT::Utils->version_cmp($nmap_version,"5.10") < 0) {
$ip = $array[1];
} else {
$ip = $array[5];
@ -1252,30 +1252,5 @@ sub format_xml {
return ($xml);
}
#--------------------------------------------------------------------------------
=head3 get_nmapversion
for nmap version 5.10 above, the sP option changed to sn.
the output of some commands also have differents.
example: for snmp_scan option,
version 4.75 has output "Host 10.4.25.1 appears to be up ... good." but
for version 6.40, it has output "Discovered open port 161/udp on 10.4.25.1"
Returns:
result: version of nmap on the system
=cut
#--------------------------------------------------------------------------------
sub get_nmapversion {
$request = shift;
my $nmap_version;
my $ccmd = "nmap -V | grep version";
my $result = xCAT::Utils->runcmd($ccmd, 0);
my @version_array = split / /, $result;
$nmap_version = $version_array[2];
if (exists($globalopt{verbose})) {
send_msg($request, 0, "version of nmap: $nmap_version\n");
}
return $nmap_version;
}
1;