วันเสาร์ที่ 16 พฤษภาคม พ.ศ. 2558

การ Ping หลายๆ IP พร้อมกัน โดยใช้ TCL Script (TCLSH)

การ Ping หลายๆ IP พร้อมกัน โดยใช้ TCL Script (TCLSH)


TCL (Tool Control Language) เป็นภาษา Script ที่สามารถใช้บน Cisco IOS ตั้งแต่ Version 12.2(25) ขึ้นไป มันคือการเขียน Programming เพื่อสั่งให้อุปกรณ์ทำตามคำสั่งที่เราเขียนไว้ ถ้าผู้ใช้งานมีพื้นฐานด้าน programming มาก่อน จะสามารถใช้งานได้ง่ายขึ้นครับ

ในการสอบ CCIE Routing and Switching นั้น ผลสุดท้ายของโจทย์คือ ทั้ง Topology จะต้องติดต่อกันได้ทุก IP ตามที่โจทย์กำหนด ดังนั้นด้วยเวลาที่จำกัด การที่มาคอย Ping ที่ละ IP จะทำให้เสียเวลาเป็นอย่างมาก ดังนั้นเพื่อลดเวลาตรงจุดนี้ (หรือพูดง่ายๆก็คือ ขี้เกียจนั่นเอง 555+ ) เราจึงหา Tool มาช่วยซักหน่อย

วันนี้ผมจะนำ TCL Script มาใช้ในการช่วย Ping หลายๆ IP พร้อมกัน โดยที่เราไม่ต้องมานั่ง Ping ทีละ IP แบบอย่างง่าย โดยมีขั้นตอน ดังนี้
  1. ทำการ Lists IP address ที่เราต้องการ Ping ออกมาก่อน ตัวอย่าง เช่น
    12.1.1.1
    14.1.1.1
    11.1.1.1
    11.2.1.1
    11.3.1.1
    12.1.1.2
  2. เขียนคำสั่ง TCL Script โดยเอาชุด IP ที่ต้องการ Ping ไปวาง ดังนี้
    tclsh
    foreach ip {
    12.1.1.1
    14.1.1.1
    11.1.1.1
    11.2.1.1
    11.3.1.1
    12.1.1.2 } {ping $ip repeat 10}
    สร้างตัวแปรชื่อ ip โดยใส่หมายเลข IP address ไปเก็บไว้ จากนั้นเขียน foreach เพื่อให้วน loop หมายเลข IP address แล้วสั่ง ping โดยเรียกตัวแปรมาใช้ $ip (repeat 10 หมายถึงให้ Ping 10 packet)
     
  3. จากนั้น Copy TCL Script ข้อ 2 ไปวางใน Router
    Router#tclsh
    Router(tcl)#foreach ip {
    +>(tcl)#12.1.1.1
    +>(tcl)#14.1.1.1
    +>(tcl)#11.1.1.1
    +>(tcl)#11.2.1.1
    +>(tcl)#11.3.1.1
    +>(tcl)#12.1.1.2 } {ping $ip re 10}
  4. จากนั้นกด Enter
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 12.1.1.1, timeout is 2 seconds:
    !!!!!!!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 14.1.1.1, timeout is 2 seconds:
    !!!!!!!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 11.1.1.1, timeout is 2 seconds:
    !!!!!!!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 11.2.1.1, timeout is 2 seconds:
    !!!!!!!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 11.3.1.1, timeout is 2 seconds:
    !!!!!!!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 12.1.1.2, timeout is 2 seconds:
    !!!!!!!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms

เห็นไหมครับว่า แบบนี้จะลดเวลาของเราได้พอสมควรถ้าต้องการ Ping หลายๆ IP address แล้วเราก็มาไล่ดูว่ามี IP address ไหนบ้างที่ Ping ไม่เจอ


การใช้งาน TCL Script สามารถประยุกต์ใช้ได้ตามหลักการ Programming เลยครับ ตัวอย่าง เช่น
proc ping_net {x} {
 for {set n 1} {$n<=$x} {incr n 1} {
    exec "ping 192.168.1.$n" }}
Script นี้หมายถึง ถ้าผมพิมพ์ "ping_net 5" มันก็จะ ping ip 192.168.1.1 - 192.168.1.5 นั่นเอง

ถ้าใครสนใจเรื่อง TCL เพิ่มเติมลองดูหนังสือของ Ciscopress ได้ครับ เล่มนี้เลย
http://www.ciscopress.com/store/tcl-scripting-for-cisco-ios-9781587059452

จบแล้วครับ ก็หวังว่าจะเป็นประโยชน์ที่จะสามารถนำไปประยุกต์ใช้ได้ในการทำงานครับ สำหรับคนที่ไม่เก่ง Programming แบบผม ก็อาศัยหา Code เอาจากเว็บ Cisco นี่ล่ะครับ 555+


By ReFeeL

ไม่มีความคิดเห็น:

แสดงความคิดเห็น