ผมลองเขียน Python โดยให้ตัวโปรแกรมสามารถ Telnet เข้าไปที่ Router และสั่งตั้งค่าตาม Code ที่เราเขียนไว้เป็นแบบอย่างง่ายๆ เบสิคๆ เลยครับ เพื่อให้ได้เห็นภาพแบบง่ายๆ และได้ไอเดียไปต่อยอดได้
ผมสร้าง Lab บน EVE-NG ขึ้นมา แบบง่ายๆ ผมต่อ Router ออกมาที่เครื่อง Notebook ผม
อย่างแรก ให้ดาวน์โหลด Python Interpreter ที่
https://www.python.org/downloads/
ใช้ Ver 2.x หรือ 3.x ก็ได้ครับ ใช้ได้เหมือนกัน จะต่างกันที่ Code บางตัว
แต่... ไม่ต้องห่วงครับ ในเว็บมี Document ให้ทั้ง Ver 2.x และ 3.x
- Ver. 3.6 : https://docs.python.org/3.6/contents.html
- Ver. 2.7 : https://docs.python.org/2.7/contents.html
ถัดมา ผมลงตัว PyCham ซึ่งเป็นตัว Editor มีประโยชน์มากๆ สำหรับใช้เขียนโปรแกรม Python ดาวน์โหลดได้ที่
https://www.jetbrains.com/pycharm/download/#section=windows
ใช้ Community Edition ก็เพียงพอครับ
หลังจากดาวน์โหลดมาแล้ว เปิดโปรแกรม PyCharm ขึ้นมา
ผมจะใช้ Python เพื่อให้ Telnet ไปที่อุปกรณ์ และ ลองสั่งให้ตั้งค่าที่ตัวอุปกรณ์ดูนะครับ
ผมใช้ Code ตามนี้เลย
import getpass
import telnetlib
HOST = "192.168.84.132"
user = input("Enter your remote account: ")
password = getpass.getpass()
tn = telnetlib.Telnet(HOST)
tn.read_until(b"Username: ")
tn.write(user.encode('ascii') + b"\n")if password:
tn.read_until(b"Password: ")
tn.write(password.encode('ascii') + b"\n")
tn.write(b"enable\n")
tn.write(b"cisco\n")
tn.write(b"config ter\n")
tn.write(b"inter lo10\n")
tn.write(b"ip add 10.10.10.10 255.255.255.255\n")
tn.write(b"inter lo11\n")
tn.write(b"ip add 11.11.11.11 255.255.255.255\n")
tn.write(b"inter lo12\n")
tn.write(b"ip add 12.12.12.12 255.255.255.255\n")
print(tn.read_all().decode('ascii'))
มีส่วนที่ต้องแก้ไข ก็คือ
- HOST = "หมายเลข IP address"
- tn.write(b"ใส่คำสั่งที่ต้องการตั้งค่า\n")
ส่วนที่เหลือผมปรับมาให้บางส่วนละ สามารถลองนำไปใช้ได้เลย ปรับแค่ 2 ส่วนด้านบนก็พอครับ
ซึ่งผมเขียนให้สร้าง Interface Loopback10 , Loopback11 , Loopback12 และตั้งค่า IP address บนแต่ละ Interface Loopback
จากนั้นเอา Code ลองไป Run ใน PyCharm ดูครับว่าสามารถใช้งานได้ ไม่ติด Error ใดๆ
ในเคสที่ผม Run นี้ ไม่ติด Error ใดๆ แสดงว่า Code น่าจะใช้งานได้ เดี๋ยวต้องไปลองดู อันนี้ Save เป็นไฟล์เก็บไว้ก่อน ผมตั้งชื่อว่า "telnet.py"
ถัดมา ผมตั้งค่า IP address กับเปิด Telnet บน Router ก่อน
Router>enable
Router#configure terminal
Router(config)#enable password cisco
Router(config)#username supakorn password cisco
Router(config)#line vty 0 4
Router(config-line)# login local
Router(config-line)# transport input telnet
ลองทดสอบดูก่อนว่าสามารถ Telnet ได้จริง ผมลอง Telnet หา IP address ของตัวเอง
Router#telnet 192.168.84.132
Trying 192.168.84.132 ...
Open User Access Verification
Username: supakorn
Password:
Router>en
Password:
Router#
แบบนี้ แสดงว่า Telnet ได้ปกติ เดี๋ยวเราลอง Run ผ่าน Python ดูครับ
Code ที่ผมเขียนนี้ คือให้สร้าง Interface Loopback10 , Loopback11 , Loopback12 และตั้งค่า IP address บนแต่ละ Interface Loopback
ผมลอง "show ip interface brief" บน Router ดูก่อน
Router#sh ip int br
Interface IP-Address OK? Method Status Protocol
Ethernet0/0 unassigned YES unset administratively down down
Ethernet0/1 192.168.84.132 YES DHCP up up
Ethernet0/2 unassigned YES unset administratively down down
Ethernet0/3 unassigned YES unset administratively down down
สังเกตุว่ายังไม่มี Interface Loopback นะครับ
เดี๋ยวลอง Run Python ที่เขียนเอาไว้ดู เอาแบบง่ายๆ ก็ ดับเบิ้ลคลิก ที่ไฟล์ได้เลยครับ
หลังจาก ดับเบิ้ลคลิก "telnet.py" ก็จะแสดงให้ใส่ username/password สำหรับ Telnet
ทีนี้ลองมาดูฝั่ง Router บ้างครับ (ผมทำการ "debug telnet" ไว้บน Router)
*Jul 29 14:11:54.398: Telnet2: 1 1 251 1
*Jul 29 14:11:54.398: TCP2: Telnet sent WILL ECHO (1)
*Jul 29 14:11:54.398: Telnet2: 2 2 251 3
*Jul 29 14:11:54.398: TCP2: Telnet sent WILL SUPPRESS-GA (3)
*Jul 29 14:11:54.398: Telnet2: 80000 80000 253 24
*Jul 29 14:11:54.398: TCP2: Telnet sent DO TTY-TYPE (24)
*Jul 29 14:11:54.398: Telnet2: 10000000 10000000 253 31
*Jul 29 14:11:54.398: TCP2: Telnet sent DO WINDOW-SIZE (31)
*Jul 29 14:11:54.399: TCP2: Telnet received DONT ECHO (1)
*Jul 29 14:11:54.399: TCP2: Telnet sent WONT ECHO (1)
*Jul 29 14:11:54.400: TCP2: Telnet received DONT SUPPRESS-GA (3)
*Jul 29 14:11:54.400: TCP2: Telnet sent WONT SUPPRESS-GA (3)
*Jul 29 14:11:54.400: TCP2: Telnet received WONT TTY-TYPE (24)
*Jul 29 14:11:54.400: TCP2: Telnet sent DONT TTY-TYPE (24)
*Jul 29 14:11:54.400: TCP2: Telnet received WONT WINDOW-SIZE (31)
*Jul 29 14:11:54.400: TCP2: Telnet sent DONT WINDOW-SIZE (31)
*Jul 29 14:11:54.414: TCP2: Telnet received DONT ECHO (1)
*Jul 29 14:11:54.414: TCP2: Telnet received DONT SUPPRESS-GA (3)
*Jul 29 14:11:54.414: TCP2: Telnet received WONT TTY-TYPE (24)
*Jul 29 14:11:54.414: TCP2: Telnet received WONT WINDOW-SIZE (31)
จะเห็นว่ามี Session Telnet เข้ามาที่ Router ครับ ทีนี้ไปลองดูบน Router ว่า Interface Loopback ได้ถูก configure ไปแล้วหรือไม่
Router#show ip int br Interface IP-Address OK? Method Status Protocol
Ethernet0/0 unassigned YES unset administratively down down
Ethernet0/1 192.168.84.132 YES DHCP up up
Ethernet0/2 unassigned YES unset administratively down down
Ethernet0/3 unassigned YES unset administratively down down
Loopback10 10.10.10.10 YES manual up up
Loopback11 11.11.11.11 YES manual up up
Loopback12 12.12.12.12 YES manual up up
มาแล้วครับ Interface Loopback !!!!
อาจจะไม่ได้เขียนวิธีการ และ ไม่ได้อธิบายโดยละเอียดไว้นะครับ..
แต่เท่านี้ก็หวังว่าจะเป็นตัวอย่างแบบง่ายๆ ให้ได้ไอเดีย เผื่อใครอยากจะไปลองเล่นดูครับ
เราสามารถค่อยทยอยปรับ หรือ เขียนให้ Advance ขึ้นไปอีกได้ อย่างเช่น...
เราใส่ Command ไว้เป็น Text File แล้วให้ตัวโปรแกรมไปเอา Command จากใน Text File มาเพื่อตั้งค่าลงบนอุปกรณ์ เป็นต้น
ไม่มีความคิดเห็น:
แสดงความคิดเห็น