Reputation: 49
I use nmap to scan availabe IP in my network, I want to use PHP scan only IP Address and save only IP Address in array.
here is text file out put.
Starting Nmap 6.40 ( http://nmap.org ) at 2013-10-15 22:07 SE Asia Standard Time
Nmap scan report for 110.77.144.25
Host is up (0.042s latency).
Nmap scan report for 110.77.144.27
Host is up (0.051s latency).
Nmap scan report for 110.77.144.88
Host is up (0.033s latency).
Nmap scan report for 110.77.144.90
Host is up (0.037s latency).
Nmap scan report for 110.77.144.91
Host is up (0.038s latency).
Nmap scan report for 110.77.144.92
Host is up (0.034s latency).
Nmap scan report for 110.77.144.93
Host is up (0.035s latency).
Nmap scan report for 110.77.144.137
Host is up (0.063s latency).
Nmap scan report for 110.77.144.139
Host is up (0.037s latency).
Nmap scan report for 110.77.144.145
Host is up (0.064s latency).
Nmap scan report for 110.77.144.161
Host is up (0.074s latency).
Nmap done: 256 IP addresses (42 hosts up) scanned in 14.44 seconds
I want output save in array like this
$available = array("110.77.233.1", "110.77.233.2",
"110.77.233.3", "110.77.233.4",
"110.77.254.16");
How can I do with PHP?
Upvotes: 0
Views: 334
Reputation: 2437
Try this:
nmap -v -sn 110.77.144.25-255 | grep ^Nmap | awk '{print $5;}' | grep ^[0-9].*
Result will be:
110.77.144.25
110.77.144.26
...
110.77.144.254
110.77.144.255
SAVE OUTPUT TO FILE AND READ FROM PHP:
COMMAND:
nmap -v -sn 110.77.144.25-255 | grep ^Nmap | awk '{print $5;}' | grep ^[0-9].* > output.txt
PHP:
<?php
$fp = fopen('[path to file]/output.txt', 'r');
while(!feof($fp)) {
$each_ip = fgets($fp, 4096);
echo $each_ip;
}
fclose($fp);
Upvotes: 0
Reputation: 70540
Structured output of -oX
makes life simple:
$ nmap -sP -oX output.xml 10.60.12.50-59
Starting Nmap 6.00 ( http://nmap.org ) at 2013-10-15 20:09 CEST
Nmap scan report for 10.60.12.50-59
Host is up (0.000080s latency).
Nmap done: 10 IP addresses (1 host up) scanned in 1.41 seconds
$ php -r'$d = simplexml_load_file("output.xml");
> var_dump(array_map("strval",$d->xpath("//host[status[@state=\"up\"]]/address/@addr")));'
array(1) {
[0] =>
string(11) "10.60.12.59"
}
Upvotes: 0