็†ฑ้–€ๅˆ†้กž
 ่ผ‰ๅ…ฅไธญ…
็›ฎ้Œ„

๐Ÿง  FortiGate ่‡ชๅ‹•ๅŒ–ๅ‚™ไปฝ่ˆ‡่ฎŠๆ›ดๆฏ”ๅฐ่…ณๆœฌ

    ๐Ÿง  FortiGate ่‡ชๅ‹•ๅŒ–ๅ‚™ไปฝ่ˆ‡่ฎŠๆ›ดๆฏ”ๅฐ่…ณๆœฌ

    FortiGate ้˜ฒ็ซ็‰†็ฎก็†ไธญ,่จญๅฎšๅ‚™ไปฝ่ˆ‡็‰ˆๆœฌๅทฎ็•ฐๆฏ”ๅฐ ๆ˜ฏ็ถญ้‹้—œ้ต。 ๆœฌ็ฏ‡็คบ็ฏ„ๅฆ‚ไฝ•้€้Ž CLI ่ˆ‡ Python ่‡ชๅ‹•ๅŒ–่…ณๆœฌ ๅฎšๆœŸๅ‚™ไปฝ่จญๅฎš,ไธฆ่‡ชๅ‹•ๆฏ”่ผƒ่ฎŠๆ›ดๅทฎ็•ฐ。


    ๐Ÿ“˜ ไธ€、ๅปบ็ซ‹่‡ชๅ‹•ๅŒ–ๅ‚™ไปฝๆŽ’็จ‹

    ไฝฟ็”จ Python ้€้Ž SSH ๅ‚™ไปฝ่จญๅฎš:

    import paramiko, datetime
    
    ip = "192.168.1.254"
    user = "admin"
    password = "yourpassword"
    
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(ip, username=user, password=password)
    
    stdin, stdout, stderr = client.exec_command("show full-configuration")
    config = stdout.read().decode()
    filename = f"backup_{datetime.date.today()}.conf"
    
    with open(filename, "w") as f:
        f.write(config)
    
    client.close()
    print(f"✅ ๅ‚™ไปฝๅฎŒๆˆ:{filename}")
      

    ⚙️ ไบŒ、ๆฏ”ๅฐ่ฎŠๆ›ดๅทฎ็•ฐ

    diff backup_2025-10-22.conf backup_2025-10-23.conf
      

    ๅฏๆญ้… difflib ๆจก็ต„็”ขๅ‡บๅ ฑๅ‘Š:

    import difflib
    
    old = open("backup_2025-10-22.conf").readlines()
    new = open("backup_2025-10-23.conf").readlines()
    
    diff = difflib.HtmlDiff().make_file(old, new, "Old", "New")
    open("diff.html","w").write(diff)
      

    ๐Ÿ”— ๅปถไผธ้–ฑ่ฎ€

    — WWFandy・่‡ชๅ‹•ๅŒ–็ถฒ็ฎก็ญ†่จ˜

    ๐Ÿ”— ๅˆ†ไบซ้€™็ฏ‡ LINE Facebook X

    ๆฒ’ๆœ‰็•™่จ€:

    ๅผต่ฒผ็•™่จ€

    ๅญ—็ดš