How to Configuration Telnet With Python at GNS3



ok kawan-kawan kita masuk masih dimateri python ya, kali ini kita akan mencoba bagaimana cara membuat tools remote dengan menggunakan python ya , kita semua sudah mengenal fungsi remote ya ,, hayooo yang belum tau remote apa sih ???...


itu loh remote yang buat TV,, eehhh..๐Ÿ˜…
ok kita bisa ambil konsep dari gambar diatas maka kita bisa menyempulkan bahwa telnet merupakan merupakan alat yang di gunakan untuk mengontrol suatu benda dari jarak jauh ya guyss..
 sekarang kita coba praktekan bagaiman cara membuat telnet dengan python ya guys..

Racikan Bahannya Seperti ini
  1.  kita siapakan Aplikasi GNS3 di desktop kita
  2. Install GNS VM ( VirtualBox or VM Ware )
  3.  Download template Network Automation
  4. Ios Router Cisco 
setelah kita sudah mensiapkan bahan racikannnya, sebelumnya kawan-kawan harus paham dahulu basic python seperti apa, dan cara penggunaan GNS3 seperti apa, dan konfigurasi dasar cisco, semisalkan sudah paham, maka kita langsung racik bersama-sama dengan menggunakan topologi dibawah  ini :


Gambar. Topologi Sederhana Telnetlib

Di sini saya memiliki topologi, yang terdiri dari R1 sampai R4 dan NetworkAutomation-1,
tambahan nih, NetworkAutomation ini menggunakan Debian Server  or Ubuntu Server, mungkin sudah ya untuk konfigurasi IP di Debian or Ubuntu.

Scenario
  • membuat syntax telnet dengan menggunakan python
  • membuat script dapat berinteraksi dengan user

Preapare

  • Konfigurasi Ip address di Router Cisco dan Network automation
  • konfigurasi telnet di Router Cisco
  • pembuatan script Telnetlib dengan menggunakan python di NetworkAutomation
Checking
  • pastikan semua device dapat saling terhubung
  • pastikan config yang dibuat python dapat masuk ke router cisco

First Step :

Configuration IP Address at all device :

  • R1
R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int f0/0
R1(config-if)#ip add 10.10.10.1 255.255.255.0
R1(config-if)#
  • R2
R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#int f0/0
R2(config-if)#ip add 10.10.10.2 255.255.255.0
R2(config-if)#
  • R3
R3#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R3(config)#int f0/0
R3(config-if)#ip add 10.10.10.3 255.255.255.0
R3(config-if)#
  • R4
R4#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R4(config)#int f0/0
R4(config-if)#ip add 10.10.10.4 255.255.255.0
R4(config-if)#
  • NetworkAutomation-1

root@NetworkAutomation-1:~# ifconfig eth0 10.10.10.10/24
Second Step

Configuration telnet in the  Router Cisco  :
  • R1
R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#username cisco secret cisco
R1(config)#username cisco privilege 15
R1(config)#line vty 0 4
R1(config-line)#login local
R1(config-line)#
  • R2
R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#username cisco secret cisco
R2(config)#username cisco privilege 15
R2(config)#line vty 0 4
R2(config-line)#login local
R2(config-line)#
  • R3
R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#username cisco secret cisco
R2(config)#username cisco privilege 15
R2(config)#line vty 0 4
R2(config-line)#login local
R2(config-line)#
  • R4
R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#username cisco secret cisco
R2(config)#username cisco privilege 15
R2(config)#line vty 0 4
R2(config-line)#login local
R2(config-line)#
Three Step 

Test P2P Between NetworkAutomtion-1 to All Router Cisco :
  • NetworkAutomation-1 to R1
root@NetworkAutomation-1:~# ping 10.10.10.1
PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data.
64 bytes from 10.10.10.1: icmp_seq=2 ttl=255 time=2.53 ms
64 bytes from 10.10.10.1: icmp_seq=3 ttl=255 time=10.3 ms
64 bytes from 10.10.10.1: icmp_seq=4 ttl=255 time=5.96 ms
^C
--- 10.10.10.1 ping statistics ---
4 packets transmitted, 3 received, 25% packet loss, time 3002ms
rtt min/avg/max/mdev = 2.539/6.274/10.317/3.182 ms
  • NetworkAutomation-1 to R2
root@NetworkAutomation-1:~# ping 10.10.10.2
PING 10.10.10.2 (10.10.10.2) 56(84) bytes of data.
64 bytes from 10.10.10.2: icmp_seq=1 ttl=255 time=6.34 ms
64 bytes from 10.10.10.2: icmp_seq=2 ttl=255 time=6.98 ms
64 bytes from 10.10.10.2: icmp_seq=3 ttl=255 time=11.0 ms
^C
--- 10.10.10.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 6.340/8.139/11.095/2.108 ms
  • NetworkAutomation-1 to R3
root@NetworkAutomation-1:~# ping 10.10.10.3
PING 10.10.10.3 (10.10.10.3) 56(84) bytes of data.
64 bytes from 10.10.10.3: icmp_seq=1 ttl=255 time=7.49 ms
64 bytes from 10.10.10.3: icmp_seq=2 ttl=255 time=8.21 ms
64 bytes from 10.10.10.3: icmp_seq=3 ttl=255 time=1.00 ms
^C
--- 10.10.10.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.007/5.572/8.216/3.241 ms
  • NetworkAutomation-1 to R4
root@NetworkAutomation-1:~# ping 10.10.10.4
PING 10.10.10.4 (10.10.10.4) 56(84) bytes of data.
64 bytes from 10.10.10.4: icmp_seq=1 ttl=255 time=100 ms
64 bytes from 10.10.10.4: icmp_seq=2 ttl=255 time=2.52 ms
64 bytes from 10.10.10.4: icmp_seq=3 ttl=255 time=6.37 ms
^C
--- 10.10.10.4 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 2.522/36.433/100.400/45.258 ms
Four Step

  • Scenario One
ok pertama kita bikin terlebih dahulu file format .py , kita bisa check syntax dibawah.

root@NetworkAutomation-1:~# nano lab.1_telnet.py
setelah kita membuat file lab.1_telnet dengan menggunakan format .py ,saatnya kita ngoding telnet dengan menggunakan Python ok guys ๐Ÿ˜‹

root@NetworkAutomation-1:~# nano lab.1_telnet.py
pada file lab.1_telnet.py  kita akan memasukan interface Loopback 1 sampai 10 dan sekaligus berserta IP Address kedalam R1 ya guys ๐Ÿ˜, silahkan ketik berdasarkan coretan kuh dibawah ya kawan kuh......

import telnetlib

HOST = '10.10.10.1' 
user = 'cisco'      
password = 'cisco' 

tn = telnetlib.Telnet(HOST) 
tn.read_until("Username: ") 
tn.write(user + "\n")        
tn.write(password + "\n")

tn.write("enable\n")
tn.write("cisco\n")
tn.write("conf t\n")
tn.write("hostname saya_tampan\n")

for x in range(1,10):
     tn.write("interface loopback{}\n".format(x))
     tn.write("description FROM_TELNET_SCRIPT\n")
     tn.write("ip address 1.1.1.{} 255.255.255.255\n".format(x))
tn.write("exit\n")
tn.write("end\n")
tn.write("exit\n")

print tn.read_all()

ok sampai sih kawan sudah mengKOPI Paste Coretankuh di atas, untuk keluar tekan ctrl + x lalu y dan enter.
dirikuh akan mentranslatekan coretan ketampan ini, supaya kawankuh paham yak...

Terjemahan Coretan Kegantengan inih

###########################################################################################################################################################

* import telnetlib                  = " kita mulai dari 'Import'. siapa yang tidak mengenal kata import ya kawan, 
                                       contoh beras import dari Negara X, jadi kita akan menggunakan module yang 
                                       sudah disediakan oleh Python inih yang akan gunakan untuk membuat telnet."       

* HOST = '10.10.10.1'                = "HOST merupakan suatu variable yang berisikan 10.10.10.1 merupakan 
                               ip address yang akan dituju ke R1".

* user = 'cisco'                     = "user merupakan suatu variable yang berisikan cisco merupakan 
                                username yang akan digunakan login ke R1".

* password = 'cisco'                 = "password merupakan suatu variable yang berisikan cisco merupakan 
                                password yang akan digunakan akses ke R1".

* tn = telnetlib.Telnet(HOST)         = "tn merupakan variable yang digunakan untuk memanggil protocol Telnet dan 
                             mengunakan isi variable dari 'HOST' yaitu 10.10.10.1".
 
* tn.read_until("Username: ")         = "read_until digunakan untuk membaca suatu variable yang akan dieksekusi"
* tn.write(user + "\n")               = " tn.write digunakan untuk masukan isi variable user, dan '\n' fungsinya untuk Enter".
* tn.write(password + "\n")           = " tn.write digunakan untuk masukan isi variable password, dan '\n' fungsinya untuk Enter".

* tn.write("enable\n")                = " tn.write digunakan untuk masukan 'enable', dan '\n' fungsinya untuk Enter". 
* tn.write("cisco\n")                 = " tn.write digunakan untuk masukan 'cisco', dan '\n' fungsinya untuk Enter".
* tn.write("conf t                    = " tn.write digunakan untuk masukan 'conf t', dan '\n' fungsinya untuk Enter"
* tn.write("hostname saya_tampan\n")  = " tn.write digunakan untuk masukan 'hostname saya_tampan', dan '\n' fungsinya untuk Enter"

for x in range(1,10):                 = " Disini kita akan membuat suatu range angka 1-10 , dan kita akan menggunakan variable 'x' untuk 
       memanggil range yang telah kita buat".
     tn.write("interface loopback{}\n".format(x))   = "Disini kita akan membuat interface loopback 1-10, dengan menggunakan cara menggunakan variable 'x' 
       untuk memanggil range angka yang sudah kita persiapkan." 
     tn.write("description FROM_TELNET_SCRIPT\n")   = "Disini kita akan memberikan Description pada tiap interface yang akan kita buat".
     tn.write("ip address 1.1.1.{} 255.255.255.255\n".format(x)) = "Disini kita akan memberikan ip address ke semua interface loopback"
tn.write("exit\n")                                               = "Berikut cara keluar dari mode config cisco"
tn.write("end\n")       = "Berikut perintah untuk langsung ke mode Privilage cisco"
tn.write("wr\n")       = "Berikut menyimpan konfigurasi yang sudah kita siapkan".
tn.write("end\n")       = "Berikut kembali ke menu awal".

print tn.read_all()                                              = " Disini kita dapat menampilkan semua hasil code yang sudah kta buat tadi".
#################################################################################################################################################################

setelah selesai membuat script telnet, maka waktunya testing ya kawan kuh, untuk mengeksekusi script yang baru sajah kita bikin, gunakan kode perintah seperti dibawah ini :
root@NetworkAutomation-1:~# python lab.1_telnet.py
maka setelah di eksekusi akan muncul seperti dibawah ini :

root@NetworkAutomation-1:~# python lab.1_telnetlib
cisco
Password:
saya_tampan#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
saya_tampan(config)#hostname saya_tampan
saya_tampan(config)#interface loopback1
saya_tampan(config-if)#description FROM_TELNET_SCRIPT
saya_tampan(config-if)#ip address 1.1.1.1 255.255.255.255
saya_tampan(config-if)#interface loopback2
saya_tampan(config-if)#description FROM_TELNET_SCRIPT
saya_tampan(config-if)#ip address 1.1.1.2 255.255.255.255
saya_tampan(config-if)#interface loopback3
saya_tampan(config-if)#description FROM_TELNET_SCRIPT
saya_tampan(config-if)#ip address 1.1.1.3 255.255.255.255
saya_tampan(config-if)#interface loopback4
saya_tampan(config-if)#description FROM_TELNET_SCRIPT
saya_tampan(config-if)#ip address 1.1.1.4 255.255.255.255
saya_tampan(config-if)#interface loopback5
saya_tampan(config-if)#description FROM_TELNET_SCRIPT
saya_tampan(config-if)#ip address 1.1.1.5 255.255.255.255
saya_tampan(config-if)#interface loopback6
saya_tampan(config-if)#description FROM_TELNET_SCRIPT
saya_tampan(config-if)#ip address 1.1.1.6 255.255.255.255
saya_tampan(config-if)#interface loopback7
saya_tampan(config-if)#description FROM_TELNET_SCRIPT
saya_tampan(config-if)#ip address 1.1.1.7 255.255.255.255
saya_tampan(config-if)#interface loopback8
saya_tampan(config-if)#description FROM_TELNET_SCRIPT
saya_tampan(config-if)#ip address 1.1.1.8 255.255.255.255
saya_tampan(config-if)#interface loopback9
saya_tampan(config-if)#description FROM_TELNET_SCRIPT
saya_tampan(config-if)#ip address 1.1.1.9 255.255.255.255
saya_tampan(config-if)#exit
saya_tampan(config)#end
saya_tampan#exit

root@NetworkAutomation-1:~#

untuk verifikasi kita juga bisa lihat dari kita bisa dari log cisco seperti, bawah ini. menandakan bawah ada seseorang sudah memasukan config kedalam router cisco kita .



R1#
*Mar  1 00:16:26.667: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to up
*Mar  1 00:16:27.591: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback2, changed state to up
R1#
*Mar  1 00:16:28.551: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback3, changed state to up
*Mar  1 00:16:29.467: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback4, changed state to up
R1#
*Mar  1 00:16:30.419: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback5, changed state to up
*Mar  1 00:16:31.351: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback6, changed state to up
R1#
*Mar  1 00:16:32.311: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback7, changed state to up
*Mar  1 00:16:33.239: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback8, changed state to up
R1#
*Mar  1 00:16:34.035: %SYS-5-CONFIG_I: Configured from console by cisco on vty0 (10.10.10.10)
*Mar  1 00:16:34.191: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback9, changed state to up
R1#
*Mar  1 00:17:13.127: %SYS-5-CONFIG_I: Configured from console by cisco on vty0 (10.10.10.10)
R1#
*Mar  1 00:18:23.367: %SYS-5-CONFIG_I: Configured from console by cisco on vty0 (10.10.10.10)
R1#
*Mar  1 00:18:54.087: %SYS-5-CONFIG_I: Configured from console by cisco on vty0 (10.10.10.10)
R1#
*Mar  1 00:21:35.331: %SYS-5-CONFIG_I: Configured from console by cisco on vty0 (10.10.10.10)
R1#
saya_tampan#
untuk lebih yakin lagi kita bisa cek langsung , apakah interface loopback sudah terbikin atau tidak, silahkan cek sendiri, pakai commond sh ip int br


saya_tampan#sh ip int br
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            10.10.10.1      YES manual up                    up
FastEthernet0/1            unassigned      YES unset  administratively down down
FastEthernet1/0            unassigned      YES unset  administratively down down
Serial2/0                  unassigned      YES unset  administratively down down
Serial2/1                  unassigned      YES unset  administratively down down
Serial2/2                  unassigned      YES unset  administratively down down
Serial2/3                  unassigned      YES unset  administratively down down
Loopback1                  1.1.1.1         YES manual up                    up
Loopback2                  1.1.1.2         YES manual up                    up
Loopback3                  1.1.1.3         YES manual up                    up
Loopback4                  1.1.1.4         YES manual up                    up
Loopback5                  1.1.1.5         YES manual up                    up
Loopback6                  1.1.1.6         YES manual up                    up
Loopback7                  1.1.1.7         YES manual up                    up
Loopback8                  1.1.1.8         YES manual up                    up
Loopback9                  1.1.1.9         YES manual up                    up
saya_tampan#



















































































































Latest


EmoticonEmoticon