我是新來的Perl和實踐我正在寫一個簡單的Perl腳本來檢查我的家庭網絡的可用IP地址,並檢查他們的MAC地址,供應商和打開端口爲他們每個人。 所有我想放在mysql數據庫中的信息。 這裏是我的代碼:用於檢查網絡的Perl腳本
#!/usr/local/bin/perl
use strict;
use warnings;
use Net::Ping;
use Net::ARP;
use DBI;
use IO::Socket::PortState qw(check_ports);
require config;
my $proto = 'tcp';
my @ports = (21,22,23,80,8080);
my $address;
my $ping_timeout = 1;
my $host;
for my $i (18..21)
{
$host = "10.20.1.$i";
my $timeout = 1;
my $pinger = Net::Ping->new('icmp', $timeout);
print "$host ";
if ($pinger->ping($host))
{
my $mac = Net::ARP::arp_lookup("em0","$host");
my $vendor = vendor_lookup($mac);
$vendor=~ s/^\s+|\s+$//g;
print "$mac $vendor ";
foreach my $port (@ports)
{
my($section, $ping_timeout, %porthash);
$porthash{$proto}{$port}{'name'} = $section;
check_ports($host, $ping_timeout, \%porthash);
my $open = $porthash{$proto}{$port}{'open'};
if ($open) {
print "$port ";
}
}
print "\n";
}
}
如果我運行該腳本,我會收到類似的東西:
10.20.1.18 38:ea:a7:6f:d9:05 Hewlett Packard 80 8080
10.20.1.19 fc:15:b4:31:77:76 Hewlett Packard 80 8080
10.20.1.20 e8:39:35:25:dd:36 Hewlett Packard 22 80
我的問題是,我似乎還沒有找到一個答案如何,所有這些都那信息($ host,$ mac,$ vendor,$ port)並將其放入數據庫,因此如果我們將$ port變量放在@array中,它將與其他數組具有不同的大小。
我的數據庫結構,看起來就像是:
+----+------------+-------------------+--------------+-----------------+---------------------+
| id | ip | mac | opened_ports | vendor | date |
+----+------------+-------------------+--------------+-----------------+---------------------+
| 1 | 10.20.1.19 | fc:15:b4:31:77:76 | NULL | Hewlett Packard | 2016-02-15 15:50:19 |
| 2 | 10.20.1.20 | e8:39:35:25:dd:36 | NULL | Hewlett Packard | 2016-02-15 15:50:19 |
| 3 | 10.20.1.21 | 8c:dc:d4:5d:21:7b | NULL | Hewlett Packard | 2016-02-15 15:50:19 |
| 4 | 10.20.1.18 | 38:ea:a7:6f:d9:05 | NULL | Hewlett Packard | 2016-02-15 16:02:09 |
| 5 | 10.20.1.19 | fc:15:b4:31:77:76 | NULL | Hewlett Packard | 2016-02-15 16:02:09 |
| 6 | 10.20.1.20 | e8:39:35:25:dd:36 | NULL | Hewlett Packard | 2016-02-15 16:02:10 |
| 7 | 10.20.1.21 | 8c:dc:d4:5d:21:7b | NULL | Hewlett Packard | 2016-02-15 16:02:10 |
+----+------------+-------------------+--------------+-----------------+---------------------+
這是進口的信息,而信息的開放的端口。
您是否決定使用數據庫佈局?請[編輯]你的問題並分享。它看起來像你需要的是規範你的數據庫。 – simbabque
我已經共享了數據庫結構。 – user2642601
什麼數據類型是'opened_ports'? – simbabque