İçindekiler
piton Bir programlama dili olarak çok güçlüdür, ekipmanımızın farklı özelliklerini manipüle ederken eylemler gerçekleştirmemize ve çok önemli sonuçlar elde etmemize izin verir, bunu şu şekilde başarabiliriz: IP adresleri, portlar ve soketler. Her biri ağ yapısı içinde farklı ve eşit derecede önemli bir noktaya ulaşmamızı sağlıyor.bulunduğu ortamlardan biri piton sınıfları sayesinde ağ için programların geliştirilmesinde daha fazla güç kazanmıştır. soket kullanımı, ağ yapısını avantajımıza kullanabiliriz, bu yapı yerel olabilir veya internet, gerçekleştirebileceğimiz programlarda bize büyük bir çok yönlülük ve güç veriyor.
Soket kitaplığıBu, yapmamız gereken ilk durak, bu kütüphane, aşağıdakilere dayalı işlevler getiriyor. dersler ve örnekler, bu da bazı şeyleri nesneler oluşturmadan kullanabileceğimiz anlamına gelir.
Bu bizim için pek bir fark yaratmayabilir, ancak örnekler olmadan çalışma olasılığı, daha kısa komut dosyaları oluşturma ve kodumuza ek karmaşıklık eklemeden güçlü araçlar kullanmamıza izin verme gibi bazı olasılıkları açar.
Bu ilk alıştırma çok ilginç, çünkü sistemimizin komut konsolundan kullanarak kendi ekipmanımızdan bilgi alabileceğiz. piton ve birkaç satır kod.
GereksinimlerBir gereklilik olarak, tercümanı kurmuş olmalıyız. piton Bu eğitimde göstereceğimiz örnekleri çalıştırabilmek için makinemizde.
Yazdığımız kod üzerinde çalışıyor. sürüm 2.7 nın-nin piton bu nedenle, farklı bir sürüm kullanılıyorsa bazı değişiklikler gerekli olabilir. Sürüm uyumluluğu sorunları konusunda bize yardımcı olabilecek bir araç, farklı sürümlerini çalıştırmamıza izin veren Virtualenv'dir. piton Bunu yapmak için karmaşık konfigürasyonlara ihtiyaç duymadan bağımsız kurulumlarda.
Öncelikle komut konsolumuzu açacağız ve şuraya gireceğiz: Python etkileşimli terminaliBunu yapmak için, eğer dili doğru kurduysak, sadece python kelimesini yerleştirmemiz gerekiyor ve ona erişimimiz olacak:
Bu konsol, aşağıdaki örnekte göreceğimiz gibi, talimatları test etmek için çok kullanışlıdır, ancak yaptığımız kodu saklamamız gereken kullanımlar için, daha sonra öğreticide göreceğimiz gibi, en iyi alternatif olmayabilir.
Öncelikle kütüphanemizi import etmeliyiz, bunun için aşağıdaki komutu kullanacağız:
ithalat soketi
Ardından istediğimiz bilgileri toplamaya başlayabiliriz, bunun için sadece ne aradığımızı bilmeliyiz, örneğin ekibimizin adını almak için aşağıdakileri yazmamız yeterlidir:
bilgisayar_adı = socket.gethostname()
Daha sonra içeriğini görmek için değişkeni ekrana yazdırabiliriz, bunun için sadece yöntemi çağırırız. Yazdır:
print "Bilgisayar adı:% s"% computer_name
Bu bize interaktif terminalimizde aşağıdaki gibi bir sonuç vermelidir:
Gördüğümüz gibi, kütüphaneyi yönetmek oldukça kolay priz ve konsoldan işlemler piton, şimdi bir sonraki noktaya gidebiliriz ve bu bir kerede IP adresini almaktır, çünkü sadece benzer bir şey yapmamız gerekiyor, sadece değişkeni başlangıçta yakaladığımız bilgisayarın adıyla kullanacağız ve aşağıdakileri yapacağız:
host_address = socket.gethostbyname (host_name)
Bunu yaptıktan sonra önceki değişkeni yazdırıyoruz:
print "IP is:% s"% computer_address
Bunun terminalimizde nasıl göründüğüne bakalım:
Gördüğümüz gibi, çok fazla çaba harcamadan son derece faydalı bilgiler elde ettik, ancak bu, yapabileceklerimizle karşılaştırıldığında hiçbir şey değil.
Yukarıdakiler oldukça pratik, ancak sunumunda pek kullanışlı değil, çünkü sık sık erişemeyeceğiz, ancak satır satır girmemiz gerekecek, bu sorunu önlemek için bize gerçek bir program oluşturacağız. Şimdiye kadar nasıl elde edileceğini bildiğimiz bilgiler.
Bunun için bir düz metin düzenleyiciye ihtiyacımız olacak, SublimeText 2'yi ve programımızı barındırabileceğimiz ve kurulumumuzun ulaşabileceği bir yer öneriyoruz. piton ilgili izinleri ile.
Bir iyileştirme elde etmek için, her seferinde tüm kodu yazmak zorunda kalmadan talimatlarımızı tekrar eden bir temelde çağırmamıza izin veren bir işlev oluşturacağız, ardından yeni dosyamızda arayacağız. team_information.py aşağıdaki içeriği yerleştireceğiz:
#! / usr / bin / env Python içe aktarma soketi def get computer_info (): computer_name = socket.gethostname () computer_address = socket.gethostbyname (bilgisayar_adı) print "bilgisayar adı:% s"% computer_name print "IP: % s "% computer_address if __name__ == '__main__': get_team_info ()
Kodun sekmelerine ve girintilerine saygı göstermemiz çok önemlidir, çünkü bu tek yol budur. piton kullanıyorsak, blok değişikliklerini tanıyabilir Yüce metin Kodumuzun girintilerini görsel olarak doğrulamamıza izin verdiği için endişelenmemize gerek kalmayacak:
Şimdi sistem komut konsolumuzda ve de girmeden piton Dosyamızı çağırabiliriz ve sonucu göreceğiz, bunun için yürütüyoruz python dosyaadı.py aşağıdaki resimde gördüğümüz gibi:
Kütüphanenin nasıl çalıştığına dair bazı temelleri gördüğümüzden beri prizBunu yeni bir düzeye çıkaralım. Yeni talimatları kullanmaya gerek kalmadan, artık uzak bir bilgisayarın adresini alacağız, bu, yapmak istediğimiz herhangi bir doğrulama için bilgi toplamak için çok önemli olabilir.
Bu durumda, şimdi adı verilen yeni bir dosyada önceki programımızı biraz değiştireceğiz. remote_information.py aşağıdakileri yerleştireceğiz:
#! / usr / bin / env Python içe aktarma soketi def get_remote_computer_info (): remote_computer = 'www.google.com' deneyin: print "Uzaktaki bilgisayar:% s"% remote_computer print "IP adresi:% s"% socket.gethostbyname (remote_host) hariç socket.error, err_msg: __name__ == '__main__' ise: "% s:% s" % (remote_host, err_msg) yazdır: get_remote_host_info ()
Yaptığımız şey basitçe bir uzak ana bilgisayarKanıtlayacak hiçbir şeyimiz olmadığı için, bilinen bir web sitesini ondan bilgi almak için kullanabiliriz, bu örnekte adresini kullanacağız. Google, bu durumda takımımızın adı URL ve aynı yöntemi kullanarak gethostbyname () bilgileri alacağız.
Yerleştirdiğimiz adresi reddetmemiz ve bu nedenle nedenlerini bilmemiz durumunda bir hata işleyici de ekledik, sonunda bunu konsolumuzda çalıştırdığımızda aşağıdakileri elde edeceğiz:
Ağ protokolleri altında çalışan programlar yapmak istiyorsak, bir IP adresinin ifade edilebileceği farklı formatları kullanmamız gerekecek, tüm bunlar elbette gördüğümüz rahatlığa göre.
Popüler formatlarIP adresleri için çok popüler iki biçim vardır, ilki inet_aton () IP'nin paketlenmiş bir sürümü olan ve aşağıdakiler inet_ntoa () bu tam tersidir ve IP'nin paketlenmemiş bir sürümüdür.
Her birinin programlarda kullanımları vardır, ancak bu öğreticinin ana konusu bu değildir, belirtebileceğimiz tek ek şey, bu biçimlerin ve işlevlerinin yalnızca IPv4, bunun yerine IPv6 diğerleri geçerlidir.
Bu dönüşümü yapmamıza izin veren yeni bir program oluşturacağız:
#! / usr / bin / env Binascii'den Python içe aktarma soketi içe aktarma hexlify def format_ip_address (): remote_host_a = socket.gethostbyname ('www.twitter.com') remote_host_b = dir_ip için socket.gethostbyname ('www.facebook.com') [remote_host_a, remote_host_b] içinde: package_ip = socket.inet_aton (dir_ip) no_packed_ip = socket.inet_ntoa (packed_ip) print "IP Adresi:% s => Paketlenmiş:% s, Paketlenmemiş:% s"% (dir_ip, hexlipify (packed_ip) ) ), unpacked_ip) eğer __name__ == '__main__': format_ip_address ()
Burada yine kütüphaneyi import ederek programımıza başlıyoruz. priz, sonra adlı bir kitaplığı içe aktarıyoruz altıgenleştirmek bu, okunabilir olmaları için onaltılık biçimlerin bir dönüşümünü oluşturmamıza izin verir, bunu IP adreslerinin şifresini çözebilmek için kullanacağız. Bunu daha ilginç hale getirmek için, IP adreslerini alacağımız iki uzak bilgisayar yerleştirdik ve döngü için her ikisini de yineleyeceğiz, yineleme içinde adres biçimleriyle dönüşümleri yapabileceğimiz zamandır. IPv4 elde ettiğimiz.
Sonunda her biri hakkında bir izlenim bırakıyoruz, bunun için yöntemlere güvendik. inet_aton () ve inet_ntoa () hem de sınıf tabanlı olduğunu ve örnek tabanlı olmadığını hatırlamak önemli olan soket kitaplığından.
Bir önceki dosyayı komut konsolumuzda çalıştırdığımızda tüm bunların neye benzediğini görelim:
Bu örnekle, uzaktaki bir bilgisayardan bilgi elde etmekten, her şeyi interaktif konsola yazmak zorunda kalmadan bilgiyi elde etmemizi sağlayan bir fonksiyon oluşturmaya kadar daha önce gördüğümüz tüm hileleri karıştırdık. piton.
ÖnemliÖnemli bir tavsiye, herhangi bir sorumuz olduğunda belgeleri kullanmamız gerektiğidir ve büyük topluluk sayesinde piton İnternette, karşılaştığımız herhangi bir şüphe veya soruna pratik olarak bir çözüm bulabiliriz.
Bununla, bu öğreticiyi sonlandırıyoruz, yalnızca ağlar için neyin programlandığına bir giriş. pitonBununla birlikte, programlarımızdan, hem bilgisayarlarımızdan hem de uzak bilgisayarlardan gelen bilgileri değiştirebileceğimizi bilmek oldukça yararlıdır, bu, onu elde etmek için kitaplıklardan ekstra eklemeler yapmak veya birden çok kod satırı yapmak zorunda kalmadan.Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.