lldp raporunda temizlik
networkteki routerlar üzerinde lldp raporları aldığınızı düşünün.. tüm cihazlardan alınan raporlar birleştirildiğinde baslangic ve bitis router bilgileri yer değişmiş olsada bir mükerrerlik olacaktır..
elimizdeki tablo kabaca ağıdaki şekilde olacaktır…
id | baslangic_ne_ismi | baslangic_interface_ip | bitis_ne_ismi | bitis_interface_ip |
1 | router_a | 10.10.10.1 | router_c | 10.10.10.2 |
2 | router_c | 10.10.10.2 | router_a | 10.10.10.1 |
3 | router_b | 10.10.10.3 | router_d | 10.10.10.4 |
4 | router_d | 10.10.10.4 | router_b | 10.10.10.3 |
sqlite de bu durumdaki linkleri tespit etmek için aşagıdaki sorguyu
SELECT a.id AS id1, b.id AS id2,
a.baslangic_ne_ismi, a.baslangic_interface_ip,
a.bitis_ne_ismi, a.bitis_interface_ip
FROM network_link a
JOIN network_link b
ON a.baslangic_ne_ismi = b.bitis_ne_ismi
AND a.baslangic_interface_ip = b.bitis_interface_ip
AND a.bitis_ne_ismi = b.baslangic_ne_ismi
AND a.bitis_interface_ip = b.baslangic_interface_ip
AND a.id < b.id;
aynı olduğunu düşünülen verilerden yüksek idli olan silmek için ise aşagıdaki sorguyu kullanabilirsiniz.
DELETE FROM network_link
WHERE id IN (
SELECT b.id
FROM network_link a
JOIN network_link b
ON a.baslangic_ne_ismi = b.bitis_ne_ismi
AND a.baslangic_interface_ip = b.bitis_interface_ip
AND a.bitis_ne_ismi = b.baslangic_ne_ismi
AND a.bitis_interface_ip = b.baslangic_interface_ip
AND a.id < b.id
);
sonucta elde edeceğimiz tablo aşagıdaki şekilde olacaktır.
id | baslangic_ne_ismi | baslangic_interface_ip | bitis_ne_ismi | bitis_interface_ip |
1 | router_a | 10.10.10.1 | router_c | 10.10.10.2 |
3 | router_b | 10.10.10.3 | router_d | 10.10.10.4 |