App-Netdisco
view release on metacpan or search on metacpan
share/config.yml view on Meta::CPAN
- {device_details: 'Device Details'}
- {ip: 'IP Address', _searchable: true}
- {location: 'Location'}
- {model: 'Model'}
- {serial: 'Serial'}
- {vendor: 'Vendor'}
- {os: 'Operating System'}
- {version: 'OS Version'}
query: |
WITH ranked_devices AS (
SELECT
d.name AS device_name,
CASE
WHEN dm.ip IS NOT NULL AND dm.class = 'chassis' THEN dm.name
ELSE NULL
END AS device_details,
d.ip AS ip,
d.location AS location,
COALESCE(dm.serial, d.serial) AS serial,
d.vendor AS vendor,
d.os AS os,
COALESCE(
CASE
WHEN dm.model IS NOT NULL
AND LOWER(REGEXP_REPLACE(dm.model, '[^a-zA-Z0-9]', '', 'g')) <> LOWER(REGEXP_REPLACE(d.model, '[^a-zA-Z0-9]', '', 'g'))
THEN dm.model || '|' || d.model
ELSE COALESCE(dm.model, d.model)
END, d.model
) AS model,
CASE
WHEN dm.sw_ver IS NOT NULL AND dm.sw_ver <> '' THEN dm.sw_ver
ELSE d.os_ver
END AS version,
ROW_NUMBER() OVER (
PARTITION BY d.name, COALESCE(dm.serial, d.serial)
ORDER BY d.ip
) AS rn
FROM
device d
LEFT JOIN
device_module dm
ON d.ip = dm.ip AND dm.class = 'chassis'
)
SELECT
device_name,
device_details,
ip,
location,
model,
serial,
vendor,
os,
version
FROM
ranked_devices
WHERE
rn = 1
ORDER BY
device_name, serial
- tag: portserrordisabled
label: 'Blocked - Error-Disabled'
category: Port
columns:
- { ip: Device, _searchable: true }
- { dns: DNS }
- { port: Port }
- { name: Description }
- { reason: Reason }
query: |
SELECT dp.ip, d.dns, dp.port, dp.name, properties.error_disable_cause AS reason
FROM device_port dp
INNER JOIN device_port_properties properties USING (ip, port)
LEFT JOIN device d USING (ip)
WHERE properties.error_disable_cause IS NOT NULL
ORDER BY dp.ip, dp.port
- tag: devicemultipleaddresses
label: 'Devices with Multiple Addresses'
category: Device
columns:
- { 'ip': 'Device IP', _searchable: true }
- { 'devname': 'Name' }
- { 'count': 'Addresses Count' }
- { 'contact': 'Contact' }
- { 'location': 'Location' }
query: |
SELECT ip, COALESCE(NULLIF(device.dns,''), NULLIF(name,''), '(none)') AS devname, count(alias), contact, location
FROM device_ip LEFT JOIN device USING (ip)
GROUP BY ip, devname, contact, location
HAVING count(alias) > 1
ORDER BY count(alias) DESC, devname ASC
- tag: devicesharedaddresses
label: 'IPs on Multiple Devices'
category: Device
columns:
- { 'alias': 'Interface IP', _searchable: true }
- { 'count': 'Instance Count' }
query: |
SELECT alias, count(ip)
FROM device_ip
WHERE alias != '127.0.0.1'
GROUP BY alias
HAVING count(ip) > 1
ORDER BY count(ip) DESC, alias ASC
- tag: recentlyaddeddevices
category: Device
label: 'Recently Added Devices'
columns:
- { ip: 'Device IP', _searchable: true }
- { devname: 'Name' }
- { model: 'Model' }
- { vendor: 'Vendor' }
- { creation: 'Date Added' }
- { os: 'Operating System' }
- { os_ver: 'OS Version' }
- { location: 'Location' }
- { contact: 'Contact' }
- { serial: 'Serial' }
bind_params:
- { param: 'since', default: '2 months' }
query: |
SELECT ip, COALESCE(NULLIF(dns,''), NULLIF(name,''), '') AS devname,
( run in 3.198 seconds using v1.01-cache-2.11-cpan-5837b0d9d2c )