สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
By joeFollow เพิ่มเติมโดยผู้เขียน:
เกี่ยวกับ: ฉันชอบที่จะแก้ไขอะไรก็ได้ บางครั้งก็ได้ผลในที่สุด ขอให้สนุกกับการดูโปรเจ็กต์ ลองฉีกสิ่งที่เปิดออกและแจ้งให้เราทราบว่ามันจะเป็นอย่างไร ไชโย -Joe More About joe »
คำแนะนำนี้แสดงสคริปต์ที่สามารถใช้เพื่อสำรองข้อมูลอัตโนมัติของไฟร์วอลล์ netscreen ที่รัน ScreenOS
ขั้นตอนที่ 1: ข้อกำหนด
สคริปต์นี้เขียนขึ้นโดยคาดคะเนและถือว่าคุณเปิด SSH บน netscreen และสภาพแวดล้อม linux หากคุณไม่เคยเช็คเอาท์มาก่อน Oreilly มีหนังสือที่ยอดเยี่ยม "Exploring Expect"
ขั้นตอนที่ 2: ตัวแปร
เราจะเริ่มต้นด้วยการตั้งค่าตัวแปรบางอย่าง คุณจะต้องการตั้งค่าตัวแปร port/username/password/netscreen/prompt เพื่อให้ตรงกับสภาพแวดล้อมของคุณ #!/usr/bin/expect#คาดหวังสคริปต์เพื่อสำรองข้อมูล config ของ netscreen firewalls#Joe #Set some varsset timeout 60set user "root"set password "password"set port "2022"set netscreen "foo.bar.com"set basedir "/mnt/netapp/backups/foo.bar.com" ตั้งค่าบันทึก "[timestamp -format %Y-%m-%d]-config.txt"set mailto "[email protected]"set mail subject "Error: netscreen การสำรองข้อมูลล้มเหลว [timestamp -format %Y-%m-%d] "set mailfail ""set prompt "foo->"
ขั้นตอนที่ 3: เชื่อมต่อ
ต่อไปในสคริปต์ เราจะลองและ connect.send_user "NetScren Backup Script\n"send_user "Connecting to $netscreen\n"spawn ssh $user@$netscreen -p$port expect { "password:" { send "$password\ r" คาดหวัง { "$prompt" { send_user "เชื่อมต่อ" } "การอนุญาตถูกปฏิเสธ" { send_user "รหัสผ่านไม่ถูกต้อง ออก" ตั้งค่า mailfail "รหัสผ่านไม่ถูกต้อง ออก" ปิด } หมดเวลา { send_user "ไม่มีการแจ้งกลับ" ตั้งค่า mailfail "ไม่มีการตอบกลับ " ปิด } } } "ไม่มีเส้นทางไปยังโฮสต์" { send_user "ไม่สามารถเชื่อมต่อกับ $netscreen\n" ตั้งค่า mailfail "ไม่สามารถเชื่อมต่อกับ $netscreen\n" } "ไม่ทราบชื่อหรือบริการ" { send_user "ไม่สามารถเชื่อมต่อกับ $netscreen\n" ตั้งค่า mailfail "ไม่สามารถเชื่อมต่อกับ $netscreen\n" } หมดเวลา{ send_user "หมดเวลาเชื่อมต่อกับ $netscreen" ตั้งค่า mailfail "หมดเวลาเชื่อมต่อกับ $netscreen" } }ถ้า { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}
ขั้นตอนที่ 4: ปิดการเพจ
คุณต้องปิดการเพจ - หรือแจ้งเพิ่มเติมในหน้าจอเน็ต #ปิดการใช้งาน "เพิ่มเติม" ให้ส่ง "set console page 0\r"expect { "$prompt" { send_user "\nPaging Disabled\n" } ค่าเริ่มต้น { send "ScreenOS ไม่ได้ยกเว้นตัวเลือกการเพจ\n" ตั้งค่า mailfail "ScreenOS ได้" ไม่ยกเว้นตัวเลือกการเพจ" ปิด } หมดเวลา { send_user "ScreenOS ไม่ได้ยกเว้นตัวเลือกการเพจ\n" ตั้งค่า mailfail "ScreenOS ไม่ได้ยกเว้นตัวเลือกการเพจ" ปิด }}ถ้า { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}
ขั้นตอนที่ 5: รับ Config
ตอนนี้เราจะได้รับการกำหนดค่า send_user "กำลังดาวน์โหลดการกำหนดค่า\n"log_file $basedir/$logsend "get config\r"คาดว่า { "$prompt" { log_file send_user "\nConfiguration Downloaded\n" } หมดเวลา { send_user "\nError ระหว่างการดาวน์โหลดการกำหนดค่า" ตั้งค่า mailfail "ข้อผิดพลาดระหว่างการดาวน์โหลดการกำหนดค่า" }}closeif { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}
ขั้นตอนที่ 6: ตรวจสอบเพื่อดูว่าการกำหนดค่ามีขนาดที่เหมาะสมหรือไม่
เราจะตรวจสอบเพื่อดูว่าการกำหนดค่ามีขนาดไฟล์อย่างน้อย 1k.set [ขนาดไฟล์ $basedir/$log]ถ้า { $filesize <= 1024 } { send_user "Netscreen config เล็กเกินไป กรุณาตรวจสอบ\n" set mailfail " การกำหนดค่า Netscreen มีขนาดเล็กเกินไป โปรดตรวจสอบ\n" exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}
ขั้นตอนที่ 7: ล้างข้อมูล
ให้เรียกใช้การล้างข้อมูลเล็กน้อยเพื่อลบการกำหนดค่าที่เก่ากว่าสองสัปดาห์ #Remove config ที่เก่ากว่า 2 สัปดาห์exec find $basedir -name '*config.txt*' -mtime +14
ขั้นตอนที่ 8: ทั้งหมดเข้าด้วยกัน
วางมันทั้งหมดเข้าด้วยกันตอนนี้ มันถูกแนบเป็นไฟล์ข้อความ มันจะส่งอีเมลเกี่ยวกับความล้มเหลวใด ๆ #!/usr/bin/expect#คาดหวังสคริปต์เพื่อสำรองข้อมูล config ของ netscreen firewalls#Joe#Set some varsset timeout 60set user "root"set password "password"set port "2022"set netscreen "foo.bar.com"set basedir "/mnt/netapp/backups/foo.bar.com" ตั้งค่าบันทึก "[timestamp -format %Y-%m-%d]-config.txt"set mailto "[email protected]"set mail subject "Error: netscreen การสำรองข้อมูลล้มเหลว [timestamp -format %Y-%m-%d] "set mailfail ""set prompt "foo-> "send_user "NetScren Backup Script\n"send_user "Connecting to $netscreen\n"spawn ssh $user@$ netscreen -p$port คาดหวัง { "รหัสผ่าน:" { ส่ง "$password / r" คาดหวัง { "$prompt" { send_user "เชื่อมต่อ" } "การอนุญาตถูกปฏิเสธ" { send_user "รหัสผ่านไม่ถูกต้อง ออก" ตั้งค่า mailfail "รหัสผ่านไม่ถูกต้อง ออก " ปิด } หมดเวลา { send_user "ไม่มีการตอบกลับ" ตั้งค่า mailfail "ไม่มีการแจ้งกลับ" ปิด } } } "ไม่มีเส้นทางไปยังโฮสต์" { send_user "ไม่สามารถเชื่อมต่อกับ $netscreen\n" ตั้งค่า mailfail "ไม่สามารถเชื่อมต่อกับ $netscreen\ n" } "ไม่ทราบชื่อหรือบริการ" { send_user "ไม่สามารถเชื่อมต่อกับ $netscreen\n" s et mailfail "ไม่สามารถเชื่อมต่อกับ $netscreen\n" } หมดเวลา{ send_user "หมดเวลาเชื่อมต่อกับ $netscreen" ตั้งค่า mailfail "หมดเวลาเชื่อมต่อกับ $netscreen" } }ถ้า { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}# เสร็จแล้ว ดำเนินการต่อ #Disable the "more" promptsend "set console page 0\r"expect { "$prompt" { send_user "\nPaging Disabled\ n" } ค่าเริ่มต้น { ส่ง "ScreenOS ไม่ได้ยกเว้นตัวเลือกการเพจ\n" ตั้งค่า mailfail "ScreenOS ไม่ได้ยกเว้นตัวเลือกการเพจ" ปิด } หมดเวลา { send_user "ScreenOS ไม่ได้ยกเว้นตัวเลือกการเพจ\n" ตั้งค่า mailfail "ScreenOS ไม่ได้ยกเว้นตัวเลือกการเพจ" ปิด }}ถ้า { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}send_user "กำลังดาวน์โหลดการกำหนดค่า\n"log_file $basedir/$logsend "get config\r "คาดว่า { "$prompt" { log_file send_user "\nConfiguration Downloaded\n" } หมดเวลา { send_user "\nเกิดข้อผิดพลาดระหว่างการดาวน์โหลดการกำหนดค่า" ตั้งค่า mailfail "ข้อผิดพลาดระหว่างการดาวน์โหลดการกำหนดค่า" }}closeif { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}กำหนดขนาดไฟล์ [ขนาดไฟล์ $basedir/$log]if { $filesize <= 1024 } { send_user "การกำหนดค่า Netscreen เล็กเกินไป โปรดตรวจสอบ\n" ตั้งค่า mailfail "การกำหนดค่า Netscreen เล็กเกินไป โปรดตรวจสอบ\n" exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}#Remove config เก่ากว่า 2 สัปดาห์exec ค้นหา $basedir -name '*config.txt*' -mtime +14