Nautilus için FTP upload scripti
// yorumlar // python , nautilus30-08-2010. Biraz daha geliştirdim, artık eğer bilgisayarınızda pynotify kuruluysa(eğer nautilus kullanıyorsanız büyük ihtimalle gnome kullanıyorsunuzdur, dolayısıyla sorun yok) script çalışmaya başladığında ve çalışmayı bitirdiğinde bir uyarı veriyor(kaç dosya upload ettiği yazıyor). Arkaplanda ne olduğunu göremesek de, hiç yoktan iyidir.

Nautilus scriptleri işimi acayip kolaylaştırıyor, yazımı da çok kolay, bir gün içerisinde bir şeyi birden fazla kez yapıyorsam, o işlemi nautilus scripti aracılığıyla yapmaya çalışıyorum artık. Python ile tabii ki..
Bu seferki seçtiğiniz dosyaları(veya klasörleri)(birden fazla seçebilirsiniz), FTP sunucunuzda belirttiğiniz klasöre gönderiyor. Harici bir kütüphane kullanmadım, FTP işlemleri için ftplib kullandım. ftplib neredeyse bir kütüphane değil istemci, çok basit birkaç komutla her işinizi halledebilirsiniz.
#!/usr/bin/env python # -*- coding: utf-8 -*- import ftplib, os, sys try: import pynotify except ImportError: uyar = False else: uyar = True sayac = 0 # Debug icin, silinebilir # sys.stderr = open('/home/osa1/Desktop/stderr.txt', 'w') # sys.stdout = open('/home/osa1/Desktop/stdout.txt', 'w') ftp = ftplib.FTP('ftp sunucunuz') ftp.login(user='kullanici adiniz', passwd='sifreniz') yerler = [f.strip() for f in os.environ['NAUTILUS_SCRIPT_SELECTED_URIS'].split('file://') if len(f) > 0] def gonder(local, baslangic='/media'): # upload edilecek klasor global sayac if os.path.isdir(local): basename = os.path.basename(local) sunucuKlasor = '%s/%s' % (baslangic, basename) try: ftp.mkd(sunucuKlasor) except ftplib.error_perm: pass for dosya in os.listdir(local): localYeni = '%s/%s' % (local, dosya) gonder(localYeni, baslangic=sunucuKlasor) else: dosyalar = ftp.nlst(baslangic) if os.path.basename(local) in baslangic: ftp.delete(os.path.basename(local)) ftp.storbinary('STOR %s/%s' % (baslangic, os.path.basename(local)), open(local, 'rb')) sayac += 1 if uyar: n = pynotify.Notification("Upload basladi", "%s dosya ve/veya klasor" % len(yerler)) n.show() for yer in yerler: gonder(yer) if uyar: n = pynotify.Notification("Upload bitti", "%s dosya upload edildi" % sayac, "gnome-netstatus-txrx") n.show() ftp.close()


