PayPal'a üye olun ve kredi kartı ödemelerini kabul etmeye anında başlayın.
 

..::Python ile ssh bağlantısı::..

Python ..::Python ile ssh bağlantısı::.. Programlama Dilleri hakkında bilgi paylaş; Bu dökümanda Python ile uzak ssh sunucularına bağlantı anlatılacaktır. Öncelikle Python ssh2 istemcisini indirip ...
Cevapla
 
Seçenekler
  #1  
Arama 29-03-2008, 10:27
TaRzAn - ait Kullanıcı Resmi (Avatar)

Üyelik Tarihi: 29/03/08
Mesajlar: 8
 
     WS-Ticareti: (0)
Teşekkürleri: 1
0 Msg. 0 Tşkr.
Rep Gücü: 0 TaRzAn deneyimleri belirsiz.

..::Python ile ssh bağlantısı::..

Bu dökümanda Python ile uzak ssh sunucularına bağlantı anlatılacaktır. Öncelikle Python ssh2 istemcisini indirip kurmanız gerekir. Python ssh2 istemcisi paramiko'dur. Paramiko'nun ana sitesi adresindedir. Ancak paramiko'nun çalışabilmesi için pycripto modülüne ihtiyacınız olacak. Her iki paketin Fedora sürümlerini aşağıdaki adreslerden elde edebilirsiniz:




Paketleri kurduktan sonra python istemcisini çalıştırın. ve paramiko modülünü çağırın:


Kod:
++++> import paramiko
Öncelikle, bağlantı yapılacak makinanın anahtarının, yerel anahtar dosyasında (roo kullanıcısının) /root/.ssh/known_hosts olup olmadığına bakmak gerek, bağlantı yapacağımız makina 192.168.1.1 olsun

Kod:
++++> import paramiko
++++> hKeys=paramiko.HostKeys()
++++> hKeys.load("/root/.ssh/known_hosts")
++++> hKeys.lookup("192.168.1.1")

Buradan, makina anahtarının olmadığı görülüyor, eğer olsaydı {'ssh-rsa': <paramiko.RSAKey object at 0xb7f26bac>} şeklinde dönecekti. O halde öncelikle, makina anahtarını alıp, /root/.ssh/known_hosts dosyasına kaydetmeliyiz, bunun için:

Kod:
++++> t=paramiko.Transport(("192.168.1.1",22))
++++> t.start_client()
++++> host_key=t.get_remote_server_key()
++++> hKeys.add("192.168.1.1", host_key.get_name(), host_key)
++++> hKeys.save("/root/.ssh/known_hosts")
Şimdi paramiko modülündeki ssh istemcisi için bir sınıf oluşturalım:

Kod:
++++> istemci=paramiko.SSHClient()
Daha önceden bağlantı yapılan ssh sunucularının makina anahtaralarını (host keys) yükleyelim:

Kod:
++++> istemci.load_system_host_keys()
Aslında en iyisi, tüm bunları otomatik olarak yapacak bir fonksiyon yazmalı.
Şimdi 192.168.1.1 sunucusuna mbaser kullanici adi ve harikapython parolası ile bağlanalım:

Kod:
++++> istemci.connect("192.168.1.1", port=22, username="mbaser", password="harikapython")
Bu sunucuda istediğini komutu çalıştırmak için exec_command metodunu kullanmamız gerekir. Sunucuda date komutu işletelim ve sonucunu okuyalım:

Kod:
++++> stdin, stdout, stderr = istemci.exec_command('date')
++++> stdout.read()
'Fri May  4 12:38:55 EEST 2007\n'

Karşı sunucuda istediğiniz komutu çalıştırabilirsiniz. Örneğin, bir kalsö açmak için:

Kod:
++++> stdin, stdout, stderr = istemci.exec_command('mkdir /tmp/mbaser')
++++> stdout.read()
''
++++> stderr.read()
''
Elbetteki izniniz olmayan bir iş yaptığınızda:


Kod:
++++> stdin, stdout, stderr = istemci.exec_command('mkdir /mbaser')
++++> stdout.read()
''
++++> stderr.read()
"mkdir: cannot create directory `/mbaser': Permission denied\n"
şeklinde uyarılacaksınız.
Uzak makinada yapılacak işlerin birçoğunu (oradaki komutları çalıştırmak dışında) sftp bağlantısı ile yapmanız olası, bunun için bir sftp bağlantısı yapalım:

Kod:
++++> sftp=istemci.open_sftp()
sftp istemcisinin metotlarına bakacak olursak:

Kod:
++++> dir(sftp)
['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__',
 '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__',
 '__weakref__', '_adjust_cwd', '_async_request', '_convert_status', '_cwd', '_expecting',
 '_finish_responses', '_lock', '_log', '_read_all', '_read_packet', '_read_response', '_request',
 '_send_packet', '_send_server_version', '_send_version', '_write_all', 'chdir', 'chmod', 'chown',
 'close', 'file', 'from_transport', 'get', 'getcwd', 'listdir', 'listdir_attr', 'logger', 'lstat',
 'mkdir', 'normalize', 'open', 'put', 'readlink', 'remove', 'rename', 'request_number', 'rmdir', 'sock',
 'stat', 'symlink', 'truncate', 'ultra_debug', 'unlink', 'utime']
Sanırım bu kadar, metot uzak makinada yapmak istediklerinizin birçoğunu gerçekleştirir. Örneğin uzak makinadaki /home/mbaser klasörünü listeleyelim:

Kod:
sftp.listdir("/home/mbaser")
['.qt', '.bash_history', '.mcop', '.DCOPserver_mbaser.ibu.edu.tr__0', '.local',
 'ms_thesis_heat_and_temperature_concepts_test.pdf', '.Xauthority', '.gnome2_private',
 '.DCOPserver_mbaser.ibu.edu.tr_:0', '.xsession-errors-:0', 'vergi', '.mozilla', '.ICEauthority',
 'Yeo_Zadnik.pdf', '.kde', '.zshrc', 'a.PNG', '.xsession-errors', '.bash_profile', 'vergi.pdf', '.dmrc',
 '.bashrc', '.gconfd', 'Maildir', '.bash_logout', '.gnome2', 'Desktop', '.gconf']
Buradaki Yeo_Zadnik.pdf dosaysını alıp yerel makinadaki /root klasörüne kopyalayalım:

Kod:
++++> F=sftp.open("/home/mbaser/Yeo_Zadnik.pdf",'rb') #dosya sanki yerel makinada imiş gibi okunur.
++++> pdfFile=F.read()
++++> F.close()
++++> W=open("/root/Yeo_Zadnik.pdf","wb")
++++> W.write(pdfFile)
++++> W.close()
Dosyayı okurken ve yazarken "b" (binary, ikili) şekilde açtığımıza dikkat edin.

Ya da aynı işlemi get metodu ile yapabilirsiniz:

Kod:
++++> sftp.get("/home/mbaser/Yeo_Zadnik.pdf", "/root/Yeo_Zadnik.pdf")
İsterseniz, uzaktaki bir dosyayı açıp içine birşeyler ekleyip kaydedebilirsiniz:

Kod:
++++> O=sftp.open("/home/mbaser/.bash_history",'a')
++++> O.write("date\n")
++++> O.close()
Ya da tamamen yeni bir dosya açabilirsiniz:

Kod:
++++> O=sftp.open("/home/mbaser/yeni_dosya.txt",'w')
++++> O.write("Bu dosya python sftp istemcisi ile yazılmıştır")
++++> O.close()
Yerel makinadaki bir dosyayı karşı tarafı kopyalamak ta çok kolay. Örneğin, yerel makinadaki /root/dilekce.odt dosyasını karşı tarafa yazalım:

Kod:
++++> F=open("/root/dilekce.odt","rb")
++++> binFile=F.read()
++++> F.close()
++++> O=sftp.open("/home/mbaser/dilekce.odt","wb")
++++> O.write(binFile)
++++> O.close()
Ya da aynı işlemi, put metodu ile doğrudan yapabilirsiniz:

Kod:
++++> sftp.put("/root/dilekce.odt", "/home/mbaser/dilekce.odt")

python'u ilk kurcalamaya basladigimda okulun kütüphanesinde ki Mustafa Baser'in kitabı bana kaynak olmuştu bunlarda ondan notlar..Python hızlı ve yetenekli ilk mesajım pythona olsun istedim.. ((:

orjinali burda:



burdanda PIL (Python Imaging Library, Python Resimleme Kütüphanesi) Rehberi'ne ulaşabilirsiniz..
__________________
...::ALLaH Sizi TaRzAn'ın Şerrinden Korusun::... ((:

Konu TaRzAn tarafından (29-03-2008 Saat 10:34 ) değiştirilmiştir.. Sebep: Yeni konu açmak istemedim zaten pdf.. ((:
Alıntı ile Cevapla
Cevapla


Seçenekler


Benzer Konular
Konu Konu Açanlar Forum Cevaplar Güncel Mesajlar
Msn ve 11 Eylül Bağlantısı airweb Webmaster Genel Konular 1 25-09-2008 02:35
hedef (ICA bağlantısı başlatan) kadınca Güvenlik açıkları 0 02-01-2008 11:41
Bir ağ bağlantısı ayarlama kadınca İşletim Sistemleri 0 26-12-2007 02:29
Telefon ve PC Bağlantısı kadınca Cep telefonu 0 18-12-2007 12:07
Php İle Mysql Bağlantısı Nurullah_ PHP 0 07-09-2007 04:38

Siteye link vermek için alttaki kodu sitenize ekleyin
Ya da kodu Ctrl+C ile kopyalayın
Örnek görünüm: Webmaster Sitesi

Kadınlar blogu ~ Apple iPhone, iPod Touch ( iTouch ) Forum iPhone