说明:
我需要一个脚本或程序来发现我的网络上的设备.我想也许用nmap进行扫描,我只需要显示设备的名称,它是什么,以及设备的IP地址/ mac地址.我想在后台进行扫描,只能以列表的形式显示所需信息.
例:
脚本/程序运行后:
– 有两个主机
>主机1:Lenovo-PC | 192.168.1.86 | 0A:65:3F:2B:F1 |视窗
>主持人2:LG-3444 | 192.168.1.89 | A9:B2:C3:D4:E5 | LG电子
等等……你明白了.
PS:BTW,这些都不是真正的IP的例子.
概观
所以我想扫描我的网络中的设备/主机,并在列表中显示每个的重要信息(使用bash脚本,python或任何可以实现此目的的东西).
解决方法:
这是perl中的一个例子.代码以XML输出格式运行nmap,然后使用Nmap :: Parser库解析输出.您需要提供网络掩码作为参数.因此,如果将此skript保存到explore.pl文件中,则可以将其运行为
explore.pl 192.168.1.0/24
您需要将此脚本作为root if you want to display MAC addresses运行.
#!/usr/bin/env perl
use utf8;
use strict;
use warnings;
use Nmap::Parser;
sub safeGet($){
defined $_[0] ? $_[0] : "unkNown";
}
my $nmOutput=`/usr/bin/nmap -oX - -A @ARGV`;
my $np = new Nmap::Parser;
$np->parse($nmOutput);
my $cnt=0;
for my $host ($np->all_hosts()){
$cnt++;
my $hostName = 'unkNown';
if(@{$host->{hostnames}} > 0){ # $host->hostname returns "0" when no hostname was found.
$hostName = $host->hostname;
}
print "Host $cnt: $hostName|"
. safeGet($host->addr) ."|"
. safeGet($host->mac_addr)."|"
. safeGet($host->os_sig->name)."\n";
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。