Fihrist | Hakkımda | Özel projeler | Hobilerim | Klavyemden.. / BT
[Makaleler Fihristine git] | [BT Makaleleri Fihristine git]

Perl Script ile Cisco Router'a bağlanma..:

           Herşeyden evvel, bir Cisco yönlendiricinin telnet bağlantısına açık olması için yapılması gereken konfigürasyonu anlatmalıyım. Çünki, Cisco yönlendiriciler, login anlamında "telnet password", "privilege password" ve aynı zamanda "username/password" destekleyebilirler. Böylece iki farklı login tipi mevcuttur.
           Aşağıdaki örneklerin her ikisi de Cisco yönelendirci konfigürasyonu yapılandırmasını sıfırdan itibaren göstermektedir. Bilgisayarın seri portundan konsol kablosu ile (rollover cable) ve bir terminal uygulaması ile bağlanmalıyız. Eğer Microsoft Windows kullanıyorsanız, "Hyper Terminal" kullanabilir yada 3. parti bir terminal yazılımı kullanabilirsiniz. Eğer Linux kullanıyorsanız çok daha fazla seçeneğiniz mevcuttur. Ben kendi kişisel laptop'umda genellikle "minicom" isimli uygulamayı kullanıyorum. Ancak sorun şu ki benim laptopumda hiç Seri port yok. Bunun için USB'den Seri'ye dönüştürme kiti kullanıyorum.
Router-A konfigürasyonu:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Router> Enable
Router# configure Terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# enable secret 0 cisco
Router(config)# line vty 0 4
Router(config-line)#login
% Login disabled on line 6, until 'password' is set
% Login disabled on line 7, until 'password' is set
% Login disabled on line 8, until 'password' is set
% Login disabled on line 9, until 'password' is set
% Login disabled on line 10, until 'password' is set
Router(config-line)#password cisco
00:00:54: %SYS-5-CONFIG_I: Configured from console by console
Router(config-line)# ^Z
Router#write memory

Aşağıdaki perl script'i, Router-A'ya bağlanmak içindir;
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl
 
use Net::Telnet::Cisco;
my $session = Net::Telnet::Cisco->new(Host => 'x.x.x.x');
$session->login('', 'password');
 
# Execute a command
my @output = $session->cmd('show version');
print @output;
 
# Enable mode
if ($session->enable("enable_password") ) {
@output = $session->cmd('show privilege');
print "My privileges: @output\n";
} else {
warn "Can't enable: " . $session->errmsg;
}
 
$session->close;

           Yukarıdaki perl script'ini yazdıktan sonra elbette çalıştırma hakkı vermeliyiz. Örneğin Script'in ismi sample.pl ise aşağıdaki gibi çalıştırma hakkı verebiliriz:
chmod +x sample.pl

Router-B konfigürasyonu (AAA model'e güncelleme):
Router(config)#aaa new-model
Router(config)#username TelnetUser privilege 15 password 0 TelnetPassword

Aşağıdaki prtl script'i Router-B'ye bağlanmak içindir;;
           ilk ve ikinci örneklerin farkı, ilk Router, telnet ve enable password'leri ile login olunan bir Router idi. İkinci Örnekte ise kullanıcı adı ve şifre gerekiyor. her durumda da Net::Telnet::Cisco kütüphanesini kullanabiliriz. Eğer linux dağıtımlarından birisini kullanıyorsanız paket yöneticiniz büyük olasılıkla bu kütüphaneyiiçeriyordur zaten.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#!/usr/bin/perl
 
use Net::Telnet::Cisco;
 
my $session = Net::Telnet::Cisco->new(Host => 'x.x.x.x');
$session->login('TelnetUser', 'TelnetPassword');
 
# Bir komut çalıştır
my @output = $session->cmd('show version');
print @output;
 
# Enable moda geç
@output = $session-> cmd('show privilege');
print "My privileges: @output\n";
$session->close;

           Eğer "Net::Telnet::Cisco" ya da bunun gibi başka bir kütüphaneyi elle manuel olarak Perl'ünüze dahil etmek isterseniz, If you want to add "Net::Telnet:Cisco" or something like that manually, you can search the related perl library on site http://search.cpan.org. sayfasında arama yaparak bulabilirsiniz. Örneğin, http://search.cpan.org/~joshua/Net-Telnet-Cisco-1.10/Cisco.pm bağlantısı ilgili içeriği barındırmaktadır. ve aynı zamanda http://search.cpan.org/CPAN/authors/id/J/JO/JOSHUA/Net-Telnet-Cisco-1.10.tar.gz bağlantısından zıkıştırılmış dosyasını indirebilirsiniz.
Not:
Sıkıştırılmış dosyayı açtıktan sonra, dosyaıar açtığınızı dizine giriniz ve "perl Makefile.PL" komutunu çalıştırınız. Daha sonra "make" ve "make install" komutları ile kurulumu tamamlayabilirsiniz. İşlemler ve çıktıları aşağıdaki gibi olacaktır:

user@hostn:~/DIR> tar xvfz Net-Telnet-Cisco-1.10.tar.gz 
Net-Telnet-Cisco-1.10/
Net-Telnet-Cisco-1.10/README
Net-Telnet-Cisco-1.10/Cisco.pm
Net-Telnet-Cisco-1.10/.cvsignore
Net-Telnet-Cisco-1.10/MANIFEST
Net-Telnet-Cisco-1.10/test.pl
Net-Telnet-Cisco-1.10/MANIFEST.SKIP
Net-Telnet-Cisco-1.10/Changes
Net-Telnet-Cisco-1.10/INSTALL
Net-Telnet-Cisco-1.10/Makefile.PL
Net-Telnet-Cisco-1.10/TODO
user@hostn:~/DIR> cd Net-Telnet-Cisco-1.10/
user@hostn:~/DIR/Net-Telnet-Cisco-1.10> perl Makefile.PL 
Checking if your kit is complete...
Looks good
Writing Makefile for Net::Telnet::Cisco
user@hostn:~/DIR/Net-Telnet-Cisco-1.10> make
cp Cisco.pm blib/lib/Net/Telnet/Cisco.pm
AutoSplitting blib/lib/Net/Telnet/Cisco.pm (blib/lib/auto/Net/Telnet/Cisco)
Manifying blib/man3/Net::Telnet::Cisco.3pm
user@hostn:~/DIR/Net-Telnet-Cisco-1.10> make install
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ERROR: Can't create '/usr/lib/perl5/site_perl/5.12.3/Net/Telnet'
Do not have write permissions on '/usr/lib/perl5/site_perl/5.12.3/Net/Telnet'
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 at -e line 1
make: *** [pure_site_install] Error 13
user@hostn:~/DIR/Net-Telnet-Cisco-1.10> sudo make install
root's password:
Appending installation info to /usr/lib/perl5/5.12.3/i586-linux-thread-multi/perllocal.pod
user@hostn:~/DIR/Net-Telnet-Cisco-1.10> 

           Yukarıdaki sonra adım derlenen kütüphanenin ilgili dizinlere yüklenmesini içerdiğinde root hakkı gerekmektedir ve bu sebeple "sudo" ile birlikte çalıştırmamız gerekmektedir. Yukarıdaki örnekte önce sudo olmadan çalıştırılmış, hata mesajı alınmış ve sonrasında sudo ile birlikte çalıştırılarak kurulum tamamlanmıştır. Ve kurulum tamam!.

One of the copies of this article located here: Practical Code Solutions: How to Connect Cisco Router with perl Scripts
My Personal Web Page - ReNewing period...