ping sonucuna bakınca durumu daha net anlayacaksınız.
ping google.com
Pinging google.com [192.178.24.14] with 32 bytes of data:
Reply from 192.178.24.14: bytes=32 time=60ms TTL=112
Reply from 192.178.24.14: bytes=32 time=59ms TTL=112
Reply from 192.178.24.14: bytes=32 time=58ms TTL=112
Reply from 192.178.24.14: bytes=32 time=63ms TTL=112
Ping statistics for 192.178.24.14:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 58ms, Maximum = 63ms, Average = 60ms
ping -6 google.com
Pinging google.com [2a00:aaaa:aaaa:820::aaaa] with 32 bytes of data:
Reply from 2a00:aaaa:aaaa:820::aaaa: time=39ms
Reply from 2a00:aaaa:aaaa:820::aaaa: time=37ms
Reply from 2a00:aaaa:aaaa:820::aaaa: time=38ms
Reply from 2a00:aaaa:aaaa:820::aaaa: time=38ms
Ping statistics for 2a00:1450:4017:820::200e:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 37ms, Maximum = 39ms, Average = 38ms
ağ yönetiminde ssh client uygulaması olarak securecrt oldukça popülerdir. eğer sizde securecrt kullanıyor ve kullanmayı planlıyorsanız network yönetimi sırasında commands manager aracı oldukça işinize yarayacaktır.
commands manager altıda istediğiniz komut tanımlamalarını yapabiliyor ve tek tıkla bu komutu aktif oturuma gönderebilirsiniz.. tasarım sırasında ağaç yapısı desteklemesi sayesinde kategorize edilmiş olarak komutları ekleyebilirsiniz…
tüm ihtiyacınız olabilecek komutları tek tek eklemez biraz yorucu olabilir.. bu noktada hazırladığım python scripti paylaşmacağım.. öncelikle ekleyeceğimiz komutları aşagıdaki formatta excel dosyasında hazırlıyoruz. vendor ve category olarak bir ağaç yapısı tasarladık.
commands.xlsx
Vendor
Category
Command
nokia
bgp
show router bgp summary
nokia
bgp
show router bgp neighbor
nokia
switch
show ethernet-service port 1/3
huawei
display ip interface brief
zte
show ip interface brief loopback0
xml_create.py
import pandas as pd
import xml.etree.ElementTree as ET
from xml.dom import minidom
def create_securecrt_xml(excel_file_path, output_xml_path):
# Excel dosyasını oku ve NaN değerleri boş string ile değiştir
df = pd.read_excel(excel_file_path).fillna("")
# Ana XML yapısını oluştur
root = ET.Element("VanDyke", version="3.0")
commands_root = ET.SubElement(root, "key", name="Commands")
# Vendor gruplarına göre işle
for vendor in df["Vendor"].unique():
if not vendor: # Vendor boşsa atla
continue
vendor_key = ET.SubElement(commands_root, "key", name=str(vendor))
# Kategoriye göre komutları grupla
vendor_data = df[df["Vendor"] == vendor]
for category in vendor_data["Category"].unique():
if pd.isna(category) or category == "": # Kategori boşsa genel komutlara ekle
continue
category_data = vendor_data[vendor_data["Category"] == category]
category_key = ET.SubElement(vendor_key, "key", name=str(category))
commands_key = ET.SubElement(category_key, "key", name="__Commands__")
default_array = ET.SubElement(commands_key, "array", name="Default")
# Komutları ekle
for _, row in category_data.iterrows():
if not row["Command"] or pd.isna(row["Command"]):
continue
command_str = f"SEND,{row['Command']},{row['Command']},,,0,1,{row['Command']},"
ET.SubElement(default_array, "string").text = command_str
# Vendor için genel komutlar (kategori yoksa)
general_commands = vendor_data[vendor_data["Category"].isna() | (vendor_data["Category"] == "")]
if not general_commands.empty:
commands_key = ET.SubElement(vendor_key, "key", name="__Commands__")
default_array = ET.SubElement(commands_key, "array", name="Default")
for _, row in general_commands.iterrows():
if not row["Command"] or pd.isna(row["Command"]):
continue
command_str = f"SEND,{row['Command']},{row['Command']},,,0,1,{row['Command']},"
ET.SubElement(default_array, "string").text = command_str
# XML'i düzgün formatla ve kaydet
xml_str = ET.tostring(root, encoding="utf-8")
dom = minidom.parseString(xml_str)
# toprettyxml encoding="utf-8" belirtilirse bytes döndürür, biz manuel yazıyoruz
body = dom.toprettyxml(indent="\t")
# toprettyxml'in ürettiği ilk satırı (<?xml ...?>) çıkar, yerine istediğimizin koy
lines = body.splitlines()
lines[0] = '<?xml version="1.0" encoding="UTF-8"?>'
# Boş satırları temizle (toprettyxml bazen ekstra boş satır ekler)
clean_lines = [l for l in lines if l.strip() != ""]
pretty_xml = "\n".join(clean_lines) + "\n"
with open(output_xml_path, "w", encoding="utf-8") as f:
f.write(pretty_xml)
if __name__ == "__main__":
excel_file_path = "commands.xlsx" # Excel dosyası yolu
output_xml_path = "securecrt_commands.xml" # Çıktı XML dosyası yolu
create_securecrt_xml(excel_file_path, output_xml_path)
print(f"XML dosyası oluşturuldu: {output_xml_path}")
excel ve python dosyasını ayını dizinde olacak şekilde çalıştırırsak aynı dizinde securecrt_commands.xml adından bir xml dosyası oluşturulacaktır.
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.
linux tabanlı bir sistemden php + apache ikilisinde yeni bir php sürümü yüklenince güncel php sürümünü kullanmak için eski sürümü pasif ederek yeni sürümü aktif etmek ihtiyacı bulunmaktadır.
excel formulleri kullanıyorsanız ve elde etmek istediğiniz textler içierinde çift tırnak olması gerekiyorsa en sağlam ve sorunsuz sonuç için ihtiyaç olan yerlerde
UNICODEKARAKTERİ(34)
CHAR(34)
kullanımı faydalı olacaktır. örnek bir formul yazalım
="/configure service epipe" &a1& "description "&UNICODEKARAKTERİ(34)&b1&UNICODEKARAKTERİ(34)
notepad+ da çok satırlı bir text içinde bir metni aradığınızda arama sonucunda Line xxx: şeklinde satır numaraları yer almaktadır. elde edilen bu çıktıdan satır numaralarından kurtulmak için
notepad+
.\w[0-9]+.metin\”.*\w[0-9]+. $
text
büyük boyutlu text doslarında içerisinde “metin” ifadesi geçen satırlardan kurtulmak için
notepad+
[+[^#]+] <+[^#]+>
text
securert de huawei routerlar için system-view renklendirmesi
yurt dışı sunucularda oyun oynuyorsanız, oyun sırasındasorun yaşayıp yaşamayacağınız hakkında genel bilgi edinmek adına aşagıdaki iki adresten hız testi yapabilirsiniz. en iyi sonucu tabiki oyun oynadığınız sunucunun test hizmeti varsa orası verecektir.