Created
April 27, 2017 07:18
-
-
Save leapar/fc669258399e58dbdd679019434249fd to your computer and use it in GitHub Desktop.
snmp top
系统信息采集
参考discovery.php
- 从数据库中取出上面发现的主机循环发现
- 主机是否存活
- 是否可以fping
- snmp是否正常可以获取sysObjectID.0
$config['discovery_modules']['os'] = 1;
$config['discovery_modules']['ports'] = 1;
$config['discovery_modules']['ports-stack'] = 1;
$config['discovery_modules']['entity-physical'] = 1;
$config['discovery_modules']['processors'] = 1;
$config['discovery_modules']['mempools'] = 1;
$config['discovery_modules']['cisco-vrf-lite'] = 1;
$config['discovery_modules']['cisco-mac-accounting'] = 0;
$config['discovery_modules']['cisco-pw'] = 0;
$config['discovery_modules']['cisco-vrf'] = 0;
$config['discovery_modules']['cisco-cef'] = 0;
$config['discovery_modules']['cisco-sla'] = 0;
$config['discovery_modules']['cisco-cbqos'] = 0;
$config['discovery_modules']['cisco-otv'] = 0;
$config['discovery_modules']['ipv4-addresses'] = 1;
$config['discovery_modules']['ipv6-addresses'] = 1;
$config['discovery_modules']['route'] = 0;
$config['discovery_modules']['sensors'] = 1;
$config['discovery_modules']['storage'] = 1;
$config['discovery_modules']['hr-device'] = 1;
$config['discovery_modules']['discovery-protocols'] = 1;
$config['discovery_modules']['arp-table'] = 1;
$config['discovery_modules']['discovery-arp'] = 0;
$config['discovery_modules']['junose-atm-vp'] = 0;
$config['discovery_modules']['bgp-peers'] = 1;
$config['discovery_modules']['vlans'] = 1;
$config['discovery_modules']['vmware-vminfo'] = 0;
$config['discovery_modules']['libvirt-vminfo'] = 0;
$config['discovery_modules']['toner'] = 0;
$config['discovery_modules']['ucd-diskio'] = 1;
$config['discovery_modules']['applications'] = 0;
$config['discovery_modules']['services'] = 1;
$config['discovery_modules']['stp'] = 1;
$config['discovery_modules']['ntp'] = 1;
$config['discovery_modules']['loadbalancers'] = 0;
$config['discovery_modules']['mef'] = 0;
- 操作系统版本获取
- 根据yaml配置文件推测系统
function checkDiscovery($array, $sysObjectId, $sysDescr)
{
// all items must be true
foreach ($array as $key => $value) {
if ($check = ends_with($key, '_except')) {
$key = substr($key, 0, -7);
}
if ($key == 'sysObjectId') {
if (starts_with($sysObjectId, $value) == $check) {
return false;
}
} elseif ($key == 'sysDescr') {
if (str_contains($sysDescr, $value) == $check) {
return false;
}
} elseif ($key == 'sysDescr_regex') {
if (preg_match_any($sysDescr, $value) == $check) {
return false;
}
} elseif ($key == 'sysObjectId_regex') {
if (preg_match_any($sysObjectId, $value) == $check) {
return false;
}
}
}
return true;
}
2. 循环加载所有os的检测版本os/****.php全部推测一次,谁成功算谁
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
服务主机发现
根据ip段 192.168.1.0/24扫描,进行fping
获取sysName.0和sysObjectID.0
根据设置的community进行snmp扫描,指定snmp版本,如果不指定,那么要扫描三次v1 2c v3。
扫描成功以后,把服务器的基本信息保存数据库中。
参考snmp-scan.php
这个时候分动态ip与固定ip,如果是固定ip那么如果数据库中有该ip那么不进行上面的两个步骤。
如果是动态ip,上面的步骤还需要,根据snmp采集的hostname为主键进行其他信息更新例如ip地址等。