perl script etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
perl script etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

28 Eylül 2016 Çarşamba

Nokia (Alcatel-Lucent) 5620 SAM sistemine XML API arayüzünden istek gönderen perl script

Merhaba,

Nokia 5620 SAM ağ yönetim sistemine XML API kullanarak dışarından bağlanmak ve çeşitli işler yaptırmak mümkündür. Bu arayüz ile diğer yönetim sistemleri SAM ile konuşabilir ayrıca geliştirilen scriptler ile cihazlar kongiure edilebilir, raporlama yapılabilir ve network yönetilebilir.

Altta bahsedilen konuları bu yolla yapmak oldukça kolaydır.

- SAM üzerinde olan herhangi bir ağ cihazında istenilen konfigurasyonu yapmak.
- Cihazlarla ilgili detaylı bilgileri raporlamak.
- Envanter raporları oluşturmak.
- Çeşitli senaryolara uygun konfigurasyon işlemleri yapmak.
- Servis tanımlamaları ve konfigurasyonları yapmak.
- Servis raporlamaları oluşturmak.
-
.
.
.

Göndermek istediğiniz XML il alttaki perl scripti içinde <SOAP:Body></SOAP:Body>
tagleri arasına yerleştirmeniz yeterlidir.

#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent 6.0;
my $usrAgent = LWP::UserAgent->new();
$usrAgent->timeout("120");
my $msg_to_send=
"<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
<SOAP:Envelope xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">
<SOAP:Header>
<header xmlns=\"xmlapi_1.0\">
<security>
<user>SAM User</user>
<password hashed=\"true\">kjhds7843jwe9js9324jhkhı6wejs89ks9</password>
</security>
<requestID>\"MyRequest\"</requestID>
</header>
</SOAP:Header>
<SOAP:Body>
    #Gönderilecek XML bu bölüme yazılacak
 </SOAP:Body>
</SOAP:Envelope>";
my $xrequest = HTTP::Request->new(POST => "http://SAM-IP-Address:8080/xmlapi/invoke");
$xrequest->content($msg_to_send);
$xrequest->content_type("text/xml; charset=utf-8");
my $xresponse = $usrAgent->request($xrequest);
my $Xml = $xresponse->decoded_content;
print "$Xml";




Teşekkürler,
Cem Selmanoğulları

Nokia (Alcatel-Lucent) 7750 SR cihazına SSH ile bağlanıp komut gönderen perl scripti

Merhaba,

Nokia 7750 Service Router (SR) cihazına bağnarak komut gönderen bir script paylaşmak istiyorum.
Cisco cihazlardan biraz farklı olarak direkt kanal üzerinden komut göndermek yerine kanal üzerinden bir terminal edinilerek shell üzerinden yazmak sureti ile komutumuzu gönderiyor ve çıktısını alıyoruz.


#!/usr/bin/perl
use Net::SSH2;
use warnings;
use strict;
no warnings 'uninitialized';
my $host = "A.B.C.D";
my $user = "ssh-username";
my $password = "password";
my $komut = "show router interface\r";
#SSH baglantisi saglanir
my $ssh = Net::SSH2->new();
        if(!$ssh->connect($host)){
                print("SSH Baglantisinda Problem - $@ \n");
                exit(1);
        } else {print("\nSSH Baglantisi Yapiliyor...\n");}
sleep(1);
        if(!$ssh->auth_password($user,$password)){
                print("Kullanici-Sifre Problemi - $@");
                exit(1);
        } else {print("\nBaglandi...\n\n");}
sleep(1);
print("Gonderilen Komut : ".$komut."\n\n");
#Kanal acilarak komut gonderilir
my $channel = $ssh->channel();
$channel->blocking(0);
$channel->pty(1);      #set tty
$channel->shell();    
sleep (1);
$channel->write("environment no more\r".$komut);
sleep (1);  
my $output;
$channel->read($output,99999999);
print "Komut Ciktisi :\n $output\n";



Teşekkürler,
Cem Selmanoğulları

27 Nisan 2016 Çarşamba

Port dinleyen script

Merhaba,

Bir sistem üzerinde port dinlemek ve bağlantı kabul etmek için basit bir perl script paylaşıyorum.
Bu scripti çalıştıracağımız sistem üzerinde herhangi bir portu dinlemeye geçirmek ve başka bir makineden telnet ile test etmek mümkün.

Böylece herhangi iki network arasında yada herhangi bir cihaz üzerinde ilgili port üzerinden iletişim olup olmadığını test edebileceksiniz.

Script, bağlantı kabul edecek makine (10.10.1.11) üzerinde, port no verilerek alttaki şekilde çalıştırılır,

c:\test>perl conntest.pl 8071

Bağlanacak makinede ise alttaki şekilde telnet client çalıştırılır,

c:\telnet 10.10.1.11 8071

Telnet çalıştırdığınız makinede alttaki çıktıyı göreceksiniz.

-----------------------------------------------------------------------------
Port 8071 Ayakta. Baglandiginiz Sistem : TRISTN0H408852

                                                       **Baglanti Kesiliyor**

Connection to host lost.
-----------------------------------------------------------------------------


#!/usr/bin/perl -w
use strict;
use Socket;
my $port = shift or die "\nPort Belirtilmedi.\nKullanim : \"perl conntest.pl 8088\"";
my $protocol = getprotobyname('tcp');
my $hostname = `hostname`;
# Soket Oluştur
socket(SERVER, PF_INET, SOCK_STREAM, $protocol) or die "socket: $!";
setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, 1) or die "setsock: $!";
# Lokal Port
my $ipaddress = sockaddr_in($port, INADDR_ANY);
# Portu Dinlemeye Başla
bind(SERVER, $ipaddress) or die "bind: $!";
listen(SERVER, SOMAXCONN) or die "listen: $!";
# Bağlantıyı Kabul Et
my $client_addr;
while ($client_addr = accept(CLIENT, SERVER)) {
    # Mesaj Bas, Bağlantı Kapa
    print CLIENT "\nPort $port Ayakta. Sistem : $hostname\n*Baglanti Kesiliyor*";
    close CLIENT;
}




Teşekkürler,
Cem Selmanoğulları

19 Aralık 2014 Cuma

Üzerinde SNMP agent bulunduran tüm cihazlardan snmp verisi çekmek için basit bir script...

Merhaba,

Network cihazları, sunucular ve üzerinde SNMP agent bulunduran tüm cihazlardan snmp verisi çekmek için basit bir script paylaşmak istiyorum.

Perl Net::SNMP kütüphanesini kullandığımız bu scriptte SNMP bağlantısı kurup belirlediğimiz bir OID ye karşılık gelen değer için istekte bulunuyor ve elde ettiğimiz sonucu ekrana bastırıyoruz.

IP, Community String ve istenen OID değerini scripte arguman olarak dışarıdan veriyoruz.

Bu scripti geliştirerek basit bir monitoring uygulaması yazmak mümkün olacaktır.


use Net::SNMP;

# SNMP OID değeri arguman olarak disaridan alinir
my $OID => $ARGV[2]

# IP adresi ve SNMP community string disaridan arguman olarak alinir
($session,$error) = Net::SNMP->session(IP => $ARGV[0],Community => $ARGV[1]);
die "SNMP Baglanti Hatasi: $error" unless ($session);

# Alinan SNMP OID degeri ile SNMP istegi yapilarak sonuc degiskenine atanir
$sonuc = $session->get_request($OID);

die "SNMP Istegi Hatasi: ".$session->error unless (defined $sonuc);

$session->close;

# SNMP OID degerine karsilik gelen deger ekrana bastirilir
print "SNMP OID Degeri: ".$sonuc->{".$OID."}";

25 Haziran 2014 Çarşamba

Otomasyon Örnekleri - 1

Merhaba,

Yaptığım otomasyon işlerinden bazı örnekleri "Otomasyon Örnekleri" yazı dizisinde paylaşmaya çalışacağım.

450 tane şubesi olan bir şirket, şubelerindeki switchlere Juniper Routerlar bağlıyor. Fakat switchlerin hangi portuna bağladıkları bilgisini girmiyorlar. Bir süre sonra bazı özel konfigurasyonlar yapılacağında bu envanter kaydı eksikliği büyük probleme neden oluyor.

Amaç Juniper routerların switchin hangi portunda olduğunu öğrenmek, ilgili porta description olarak Juniper bağlantısını yazmak ve switch üzerinde port bazlı bazı tanımlar yapmak. 450 şubenin hepsini ziyaret etmek zor... Her switche tek tek bağlanıp bakmak zor.

Yazdığımız script perl ssh kütüphanelerini kullarak cihazlarla ssh bağlantısı kurmaktadır. Bir for döngüsü ile 450 tane şube switchine sıra ile bağlanmakta ve her switchte alttaki işleri yapmaktadır. Birkaç saat içinde otomatik olarak iş bitmektedir.

Switche bağlanan script mac adreslerini listeleyecek komutu çalıştırır. Tüm mac adreslerini aldıktan sonra Juniper e özel mac adresini aradan çeker. Bilindiği üzere her Vendor a özel bir mac adresi başlığı bulunmaktadır. 48 bitlik mac adreslerinin ilk 24 biti vendorlara aittir. Dolayısı ile switch üzerinde 1 adet Juniper cihaz olduğu için 1 adet Juniper mac adres olacaktır.

Mac tablosuna bakıldığında ilgili Junper mac adresinin hangi port üzerinden geldiği görünecektir. İşte bu interface Juniper router ın bağlı olduğu interfacedir. Interface bulunduğuna göre script ile gönderilecek komutlarla istenen konfigurasyonlar yapılır. Bu işlem 450 cihaz için tekrar eder ve kısa sürede tamamlanır.

Bir yada birkaç kişinin günlerce switchlere bağlanarak yapacağı bir işi çok kısa sürede başarmış oluyorsunuz.

Teşekkürler,
Cem Selmanoğulları