[Nasıl] Python ile Ubuntu'da Hızlı Dosya Paylaşımı

Başlatan jayw, 19 Ekim 2010 - 20:43:53

« önceki - sonraki »

0 Üyeler ve 5 Ziyaretçi konuyu incelemekte.

jayw

Sistemde Samba'nın kurulu olmadığı bazı durumlarda dosya / dizin paylaşım işlemine ihtiyaç duyulabilir. Sistemde Python kurulu ise bu işlemi kolayca yapabiliriz. İlk olarak "Ctrl+Alt+T" tuşları yardımıyla uçbirim açılır daha sonra hangi klasör paylaştırılmak isteniliyorsa o klasöre girilir.

cd /home/emre

Sonra aşağıdaki komut yardımıyla sunucu başlatılır.

python -m SimpleHTTPServer

Bu komuttan sonra dosyalar 8000 numaralı porttan paylaşıma açılır. Herhangi bir web gezgini ile http://ip_adresi:8000 veya kendi bilgisayarınızdan erişim için http://127.0.0.1:8000 yazılarak dosyalara erişilebilir.


Not: Python'da bu şekilde çalıştırıldığında Türkçe karakter problemi oluşacaktır. Bu problemi çözmek için;

sudo gedit /usr/lib/python2.6/SimpleHTTPServer.py

yazılarak ilgili dosya açılır, dosyanın 134. satırı aşağıdaki şekilde değiştirilir ve sunucu yeniden başlatılır.

self.send_header("Content-type", "text/html; charset=UTF-8")


Not 2: Bu komutu akılda tutmak zor olabilir, bu sebeple .bashrc dosyanıza http adında bir takma ad (alias) ekleyip işinizi kolaylaştırabilirsiniz.

alias http="python -m SimpleHTTPServer"



Not 3: Betiği Gnome/Nautilus sağ tuş menüsüne eklemek için;

#!/bin/sh

base="`echo $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g'`"

if [ -z "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then
     dir="$base"
else
     while [ ! -z "$1" -a ! -d "$base/$1" ]; do shift; done
     dir="$base/$1"
fi

cd "$dir"
gnome-terminal -x python -m SimpleHTTPServer


Not: Gnome'da sağ tuşa bu betiği nasıl eklemek için bu kodları bir dosya oluşturup, içine yapıştırın (örneğin: pythonSunucu adında), dosyayı da

~/.gnome2/nautilus-scripts

dizini içine kopyalayın. Kullanmak için, nautilus ile paylaşmak istediğiniz dizin içerisine girip, sağ tuşa basıp, "Scripts>pythonSunucu" seçmeniz yeterli olacaktır.

heartsmagic

Uzun zamandır gördüğüm en rahat dosya paylaşım şekli :) Teşekkürler.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

neneki

çok iyi ya .. teşekkürler @jayw . hızır gibi yetiştin :)

jayw

Beğenmenize sevindim. Gerçekten çok pratik bir yöntem, acele durumlar için biçilmiş kaftan. Python sağ olsun :)

if

Bu konular hakkında bilgim olmadığı için sorularım mantıksız gelebilir, mazur görün. Bu paylaşım yöntemiyle internet üzerinden birine paylaşıma açtığımız dosyaya erişmesini sağlayabilir miyiz? Eğer cevap evetse, güvenli bir yol mudur? Daha açık ifade edersem bu yolla bilgisayarımdaki bir müzik parçasını internet üzerinden birinin indirmesini sağlayabilir miyim?

jayw

Alıntı yapılan: if - 20 Ekim 2010 - 00:03:47
Bu konular hakkında bilgim olmadığı için sorularım mantıksız gelebilir, mazur görün. Bu paylaşım yöntemiyle internet üzerinden birine paylaşıma açtığımız dosyaya erişmesini sağlayabilir miyiz? Eğer cevap evetse, güvenli bir yol mudur? Daha açık ifade edersem bu yolla bilgisayarımdaki bir müzik parçasını internet üzerinden birinin indirmesini sağlayabilir miyim?

Muhtemelen İnternet bağlantısı için ADSL kullanıyorsunuz ve servis sağlayıcınızdan talep etmediyseniz eğer bir gerçek IP adresiniz yok. Bu yöntemle İnternet üzerinden dosya paylaşmanız mümkün fakat aşağıdaki 2 yöntemden birisini kullanmak durumundasınız:

  • Servis sağlayıcınıza başvurarak statik IP almak istediğinizi belirtmek. (Bunu pek önermiyorum, IP adresinizin sabit olması bir takım güvenlik problemlerine sebep olabiliyor)
  • Modeminizin ayarlarından NAT (Network Address Translation - Ağ Adresi Dönüştürme) ile 8000 numaralı  bağlantı noktasını (port) kullandığınız bilgisayarın yerel adresinin 8000 numaralı bağlantı noktasına yönlendirerek. Bu yöntem yeni başlayanlar için karışık gelebilir. NAT'ın ne olduğu ve nasıl çalıştığı konusunda detaylı ve görsel bilgi için aşağıdaki 2 adresi ziyaret edebilirsiniz.
http://tr.wikipedia.org/wiki/NAT
http://www.teakolik.com/adsl-modeme-nat-eklemek/

Özetle bu yöntemi İnternet üzerinde kullanmak biraz teknik bilgi gerektiriyor. Bu yöntem daha çok yerel ağ üzerinde hızlı dosya paylaşımı içindir.

heartsmagic

Yanlış bilmiyorsam IP adresi sabit olsa bile bu dosya paylaşımın dışarı açmak için port yönlendirilmesi şart. Çok da uğraştıracak bir mesele değil, bir iki eklemeye bakıyor modem üzerinden :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

ytgn

Erişilen dosyaları da uçbirimden  görebiliyoruz. Gerçekten benim için çok kullanışlı olacak ;) Bunu sağ tık menüsüne ekleyebilir miyiz  ??? Betikler kısmında bir kaç betik var. Onlarda düzenleme yaparak birşeyler denedim ama olmadı :)
Gelecek için ubuntu ile yeni bir adım..

if

@ytgn ve heartsmagic, teşekkür ederim bilgiler için. Port yönlendirme işine aMule'den az-çok aşinayım. 2. yöntemi bir deneyeyim.

ytgn

Alıntı yapılan: if - 20 Ekim 2010 - 01:01:59
@ytgn ve heartsmagic, teşekkür ederim bilgiler için. Port yönlendirme işine aMule'den az-çok aşinayım. 2. yöntemi bir deneyeyim.

@if, jayw diyecektin herhalde :)
Gelecek için ubuntu ile yeni bir adım..

if


jayw

Alıntı yapılan: ytgn - 20 Ekim 2010 - 00:52:33
Erişilen dosyaları da uçbirimden  görebiliyoruz. Gerçekten benim için çok kullanışlı olacak ;) Bunu sağ tık menüsüne ekleyebilir miyiz  ??? Betikler kısmında bir kaç betik var. Onlarda düzenleme yaparak birşeyler denedim ama olmadı :)

Acaba olur mu diye bir denemek istedim, oldu :) Ama sanırım tam  olarak istediğiniz gibi olmadı. Aşağıdaki betik aslında Nautilus'un burada uç birim aç betiğinin biraz özelleştirilmiş hali :) Şimdilik 2 temel problem var. Birincisi Erişilen dosyaları uç birimden göstermiyor çünkü komut arka planda çalışıyor. İkincisi ise komut çalıştıktan sonra çalıştığını belirtmiyor, dolayısıyla ilk çalıştırdığınız sunucusu "kill" komutu ile sonlandırmazsanız, yanlışlıkla ikinci sunucu çalıştırmayı isterseniz hata verebilir. Gecenin bu saatinde ancak bu kadar oluyor :) Belki ustalar olaya el atarsa ortaya güzel ve kullanışlı bir betik çıkabilir.

Betiğin güncel hali ilk mesaja eklenmiştir.


Alıntı yapılan: if - 20 Ekim 2010 - 01:10:02
:) Teşekkür ederim @ytgn, teşekkürler @jayw.

Önemli değil, işinize yaraması dileğiyle :)

canosayan

Chmod bizim işimiz.

jayw

Alıntı yapılan: ytgn - 20 Ekim 2010 - 00:52:33
Erişilen dosyaları da uçbirimden  görebiliyoruz. Gerçekten benim için çok kullanışlı olacak ;) Bunu sağ tık menüsüne ekleyebilir miyiz  ??? Betikler kısmında bir kaç betik var. Onlarda düzenleme yaparak birşeyler denedim ama olmadı :)

Ufak bir düzenlemeyle bu betiği tam olarak istediğiniz hale getirmeyi başardım :) Sağ tık menüsünden bu betiği çalıştırdığınızda uçbirim açılıp, içinde komutu elle yazmışsınız gibi çalışıyor, pencereyi kapattığınızda ise dosya paylaşım sunucumuz kapanıyor. İhtiyacı olanlara faydalı olması dileğiyle... Kodu ilk mesaja ekledim.

ytgn

Alıntı yapılan: jayw - 21 Ekim 2010 - 02:23:50
Alıntı yapılan: ytgn - 20 Ekim 2010 - 00:52:33
Erişilen dosyaları da uçbirimden  görebiliyoruz. Gerçekten benim için çok kullanışlı olacak ;) Bunu sağ tık menüsüne ekleyebilir miyiz  ??? Betikler kısmında bir kaç betik var. Onlarda düzenleme yaparak birşeyler denedim ama olmadı :)

Ufak bir düzenlemeyle bu betiği tam olarak istediğiniz hale getirmeyi başardım :) Sağ tık menüsünden bu betiği çalıştırdığınızda uçbirim açılıp, içinde komutu elle yazmışsınız gibi çalışıyor, pencereyi kapattığınızda ise dosya paylaşım sunucumuz kapanıyor. İhtiyacı olanlara faydalı olması dileğiyle... Kodu ilk mesaja ekledim.


Güzel olmuş, teşekkür ederim ;) Yalnız bir şeyi belirtmeliyim,  mesela masa üstündeki bir klasöre sağ tıklayıp betikle paylaşıma açtığımızda, masaüstü de paylaşıma açılıyor. Yani paylaştırdığımız klasörün bir üst klasörüne de erişilebiliyor. Ama klasörün içine girip paylaş deyince sadece o klasöre erişiliyor. Bu kadarı bana yeter de artar bile ;)
Gelecek için ubuntu ile yeni bir adım..

jayw


alquirel

Gerçekten süper bir yöntem, teşekkürler.
Benim de bir sorum olacak. Benim gibi VINN kullanan birisinin de port yönlendirmesi mi yapması gerekir?
(Niye sordum: VINN gibi sadece bana ait olan bir bağlantı kullanıldığında dinamik de olsa modem üzerinde en fazla bir ip oluyor o da bana ait oluyor :), mesela dinamik ip adresimi adres çubuğuna yazdığımda yerel apache sunucumun ana sayfası açılıyor. Bu konuda bilgi eksikliğim/yanlışlığım olabilir, saygılarımla :) )

jayw

Alıntı yapılan: alquirel - 21 Kasım 2010 - 16:39:30
Gerçekten süper bir yöntem, teşekkürler.
Benim de bir sorum olacak. Benim gibi VINN kullanan birisinin de port yönlendirmesi mi yapması gerekir?
(Niye sordum: VINN gibi sadece bana ait olan bir bağlantı kullanıldığında dinamik de olsa modem üzerinde en fazla bir ip oluyor o da bana ait oluyor :), mesela dinamik ip adresimi adres çubuğuna yazdığımda yerel apache sunucumun ana sayfası açılıyor. Bu konuda bilgi eksikliğim/yanlışlığım olabilir, saygılarımla :) )

Bence port yönlendirmesi yapılması gerekir. Benim 3G modemim (VINN ya da diğeri) yok aslında ama soru üzerine birazcık araştırma yaptım. Orada yazılanı aynen aktarıyorum.

Alıntı Yap3G modem Ve Portlar : kurumsal bir 3g hattına sahipseniz ve statik ip dediğimiz ip'yi ayda 5 tl daha fazla ödeyerek aldıysanız tüm portlar sizlere açık kullana bilirsiniz peki bu nasıl olacak ? : elimde kendiminde sırf bu iş için kullandıgım bir cihaz var türkcell'de 400 tl olan bir cihaz fiyatı 170 tl bu cihazı satın alman lazım senin usb 3g modemini pc ye degilde bu cihaza takıyorsun ve 254 tane pc artık 3g interneti kullanabiliyor ve NAT dediğimiz port yönlendirmeden isrtediğin portları kendi pc ne yönlendirebiliyorsun Gaziantep'te şimdiye kadar belki 100 tane sattım ve istenilen bütün portları açtım tabi sattığım kişilerin hepsinde kurumsal 3g ve statik ip ile bunu yaptım bireyselde statik ip var ise (bunu bilmiyorum türkcell'e bi sormak lazım ) statik ip alın ve bu cihaz sayesinde FTP WEB REMOTE DESKTOP yani 21 80 3389 4389 8080 8001 8000 Gibi Tüm Portları Açabiliyorsun hatta ben kendi home server üzerinden exchange server sayesinde email bile yani 443 80 110 25 587 gibi tüm portları kullanıyorum sadece sesli iletişim için kullanılan bir port var SIP cihazlarında kullanılan port bunlar kapalı :) eğer bu portu açık bıraksa türkcell herkes ip telefon dediğimiz sistem sayesinde ücretsiz görüşmeler yapabilirler ... sanırım sana yardımcı olabildim eğer kafana takılan başka bir soru olursa sana pmden numaramı yolluyorum beni ararsan yardımcı olurum ismim serkan iyi günler dilerim...

Burada yazılana göre sadece VINN modem kullanarak pek mümkün görünmüyor ama forumda VINN kullananlar varsa mutlaka yardım edecektir :)

Ekleme: Bir diğer yorum ise port yönlendirmesi işlemine gerek olmadığını söylüyor. Bu sebeple sanırım sizin bu işlemi denemeniz lazım :) Yorumu yine aynen aktarıyorum.

Alıntı YapZira usb arayüzü kullanan modemlerde port açmanız gerekmez sadece tüm güvenlik duvarlarını kapatmanız yeterli olucaktır. Açık güvenlik duvarı olup olmadığını Denetim Masası -> Güvenlik Merkezi'nden öğrenebilirsiniz zira Windows Güvenlik Duvarınız kapalı dahi olsa çoğu yeni antivirüs kendi güvenlik duvarları ile geliyor (İngilizcesi Firewall'dur. Antivirüsünüz İngilizce ise Firewall sekmesini bulmanız gerekir) . Öte yandan Vınn ve diğer 3G bağlantılar yeterince stabil ve güçlü olmadıkları için kesinlikle host olmanızı tavsiye etmem zira oyununuzdaki oyuncular inanılmaz delay ve pinglerden rahatsız olucaklardır.

İkinci yorum bana daha mantıklı geldi. Deneme fırsatınız olursa eğer beni de bilgilendirirseniz sevinirim. :)

plymouth

-10 üzerinden 10
Ya da
-Ooo Ölüm Makinası...

Bu başlık yılın en beğenilen forum girdisi Oscarlarında finale kalmalıdır...


Ölüm Makinası > Bknz :http://forum.ubuntu-tr.net/index.php/topic,14867.msg266725.html#msg266725
This life is not the real thing.
It is not even in Beta.
If it was, then OpenBSD would already have a man page for it

alquirel

Anlaşıldı. Bu konu benim için biraz özveri istiyor :)
Teşekkürler

jayw

Alıntı yapılan: plymouth - 21 Kasım 2010 - 17:19:51
-10 üzerinden 10
Ya da
-Ooo Ölüm Makinası...

Bu başlık yılın en beğenilen forum girdisi Oscarlarında finale kalmalıdır...


Ölüm Makinası > Bknz :http://forum.ubuntu-tr.net/index.php/topic,14867.msg266725.html#msg266725

Ölüm Makinası olayını da anlamış olduk :) Gerçekten ilginç bir tabirmiş ama. Bu arada beğenmenize sevindim. Umarım bu tip bir şeye ihtiyaç duyanlara faydalı olur.

Alıntı yapılan: alquirel - 21 Kasım 2010 - 17:38:13
Anlaşıldı. Bu konu benim için biraz özveri istiyor :)
Teşekkürler

Evet üzerinde biraz çalışmak lazım :) Ama işinize yarayacak bir şey ise biraz zaman ayırmakta fayda var, belki çözülürse forumda VINN veya diğer 3G modem kullanan arkadaşların da işine yarar. Ben bulursam bir tane test edeceğim. Siz de test etme imkanı bulursanız daha da süper olur...

alquirel

Yaklaşık bir saattir geziniyorum internette ama bilgi eksikliği olunca bakmam gereken yeri göremiyorum malesef. :-\

Daha doğrusu iptables'a biraz baktım, IP Routing hakkında bir şeyler okudum ama bunların üzerinden mi devam etmeliyim bilemedim :)

plymouth

Merhaba @ alquirel
sanırım http server için gelen paketleri port 8000'e yönlendirmeniz yeterli olacaktır.
Bunun için aşağıdaki komutun işletilmesi gerekli.

sudo iptables -t nat -A PREROUTUING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8000

-Eğer bir firewall yönetim yazılımı (ufw, firestarter gibi) kullanmıyorsanız bunun işe yaraması gerekli. Kullanıyorsanız bu yazılımları durdurup öyle deneyin.
-Bilgisayar kapatıldıp açılınca bu kod gitmiş olacak.
-Bu kodun her açılışta sisteme girilmesi sıkıntı oluşturur benim için diyorsanız kodu hep aktif olacak şekilde /etc/rc.local dosyasının içine (exit0 kısmından öncesine) yazmanız yeterli. Ama şunu belirtmeliyim ki bunun  bi' güvenlik zafiyeti oluşturacağı aşikar.
-Bunun yerine bir alias tanımlaması işinizi görecektir.
Kolay Gelsin...
This life is not the real thing.
It is not even in Beta.
If it was, then OpenBSD would already have a man page for it

alquirel

@plymouth,
Şöyle bir hata veriyor verdiğin kod : No chain/target/match by that name.

Yapmaya çalıştığım şey özetle şu: Verilen python betiği ile dosyalar yerel ağda paylaşıma açılıyor. Bunu şuanki dinamik ip'min sonuna 8000 ekleyerek nasıl paylaşıma açabilirim? Galiba modem ayarlarından port açmak falan lazım. Benim modem de USB modem olduğu için işler değişiyor. O da ayrı bi başlık konusu :)
Başarabilirsem paylaşırım...

heartsmagic

@alquirel, USB modemlerde port açma falan yok, ancak 3g modemlerde iş biraz karışık gibi. Sanırım pek mümkün değil bu olay ya da en azından servis sağlayıcınla görüşmen gerekiyor. Zira 3g sağlayıcılar sanırım NAT kullanıyorlar. IP adresin nasıl bir şey mesela?
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.