Skocz do zawartości


Zdjęcie

[Python] Połączenie Sftp Zwraca "Eoferror"


  • Zaloguj się, aby dodać odpowiedź
3 odpowiedzi w tym temacie

#1 borzole

borzole

    Yamato

  • Użytkownicy
  • 2363 postów

  • Rejestracja: 16 sierpień 07
  • Płeć:Mężczyzna

Napisano 12 czerwiec 2011 - 07:03

Mam na fedorce odpalony server ssh
z wpisem w ssh_config
"Subsystem sftp /usr/libexec/openssh/sftp-server"
i z WinSCP (odpalony na M$ Windows) moge dostac sie do niego uzywajac zarówno "file protocol" SCP jak i SFTP.
Czy ktos jest w stanie wyjasnic co to tak naprawde oznacza w tym WinSCP, skoro odpowiada za to ta sama usluga na fedorce?
Pytam sie, bo w zaden sposób nie moge dostac sie do zasobów z poziomu skryptu pytona (odpalony na tej samej maszynie co winscp) uzywajac modulu ftplib.
Ale ten sam skrypt bez problem laczy sie z FTP (freesshd.com) na W7 lub SFTP na HP-UX.

from ftplib import FTP

ftp = FTP()
ftp.set_debuglevel(2)
ftp.connect('192.168.1.12','2222')
ftp.login('lucas','1234')
print
ftp.getwelcome()
print ftp.pwd()
print
print ftp.dir()
print ftp.retrlines('LIST')
ftp.quit()
odpowiedz:
*get* 'SSH-2.0-OpenSSH_5.5\r\n'
tu nastepuje zawieszenie na ~1minute potem reszta
*get* ''
Traceback (most recent call last):
File "ftpium.py", line 48, in <module>
ftp = getFtp(True)
File "ftpium.py", line 13, in getFtp
ftp.connect('192.168.1.12','2222')
File "C:\usr\share\Python27\lib\ftplib.py", line 135, in connect
self.welcome = self.getresp()
File "C:\usr\share\Python27\lib\ftplib.py", line 210, in getresp
resp = self.getmultiline()
File "C:\usr\share\Python27\lib\ftplib.py", line 200, in getmultiline
nextline = self.getline()
File "C:\usr\share\Python27\lib\ftplib.py", line 186, in getline
if not line: raise EOFError
EOFError

to wyglada tak, jakby nie uzyskal odpowiedzi i stad zwraca blad "koniec pliku/nadawania"
Dokladnie to samo sie dzieje, gdy uruchomie skrypt lokalnie na fedorce

*get* 'SSH-2.0-OpenSSH_5.5\r\n'
*get* ''
Traceback (most recent call last):
File "silnik.py", line 12, in <module>
ftp.connect('127.0.0.1','2222')
File "/usr/lib/python2.7/ftplib.py", line 135, in connect
self.welcome = self.getresp()
File "/usr/lib/python2.7/ftplib.py", line 210, in getresp
resp = self.getmultiline()
File "/usr/lib/python2.7/ftplib.py", line 200, in getmultiline
nextline = self.getline()
File "/usr/lib/python2.7/ftplib.py", line 186, in getline
if not line: raise EOFError
EOFError

  • 0

F7-14/18/19.32/64 | fluxbox/openbox/xfce/gnome2/mate
poradnik@wiki


jedral.one.pl


#2 Subaru

Subaru

    Ekspert

  • Użytkownicy
  • 749 postów

  • Rejestracja: 05 październik 07
  • Płeć:Mężczyzna
  • Skąd:Ura-Net
  • Zainteresowania:Programowanie na platformę Nintendo DS oraz Nintendo Wii
    Zabawa w Terminalu :P

Napisano 12 czerwiec 2011 - 07:31

Jakieś różnice istnieją na pewno, to nie przypadek iż w smartfonach można znaleźć aplikacje właśnie do komunikacji SSH a nie FTP
Powypisuję różnice, które mi przyjdą na myśl, zapewne są oczywiste ale może coś Cię natchnie

- Port (FTP 21 ;; SSH 22)
- Szyfrowanie (FTP z tego co pamiętam nie używa kluczy ;; SSH używa kluczy RSA bodajże jako odcisk czy coś)
- Podtrzymywanie połączenia (przy FTP nie słyszałem o czymś takim ;; w SSH możliwe jest podtrzymywanie połączenia w przypadku bezczynności)
- Logowanie (FTP umożliwia per anonymous ;; SSH chyba nie pozwala na zabawę anonymousem, musi być login i hasło konkretne)
- Wykonywanie poleceń (FTP pozwoli tylko na polecenia FTP'kowe ;; SSH pozwala na niemalże pełną zdalną kontrolę "ofiarą" ;])
- Podsłuch (FTP idzie podsłuchać ;; SSH już nie tak łatwo podsłuchać przy odpowiednich zabezpieczeniach)

Jeszcze tutaj jest jakaś rozpiska protokołów, może coś więcej jeszcze rozjaśni
http://zagrodzki.net...k/security.html
  • 0

[Subaru@SkyNet ~]$ info.sh

Kernel - 3.15.4-200.fc20.x86_64
Terminal - Terminal 1.8.1 (MATE)
Pracuję na: Fedora 20 x86_64 MATE 1.8.1 Trinity Desktop Environment 3.5.13.2 (chwilowo bez Trinity)

Używam Wine 1.7.27

 

Clash of Gods - TCG/CCG in progress

 

SeeM, to nie jest portal hazardowy :) Nie przyjmujemy zakładów :)
Termin wydania F21 jest równie mało przewidywalny jak zero w ruletce.

#3 ecik__

ecik__

    Paczker

  • Użytkownicy
  • 834 postów

  • Rejestracja: 15 maj 05
  • Płeć:Mężczyzna
  • Skąd:Rybnik

Napisano 12 czerwiec 2011 - 10:04

Modułem ftplib na pewno się nie dostaniesz, bo to nie ten protokół (jak zauwazył wyżej Subaru, są różnice między ftp i sftp).
Do połaczeń ssh i sftp w pythonie, możesz wykorzystać paramiko. Jest też w repo, jako python-paramiko. W dokumentacji jest przykład z sftp, /usr/share/doc/python-paramiko-*/demos/demo_sftp.py.
  • 0

#4 borzole

borzole

    Yamato

  • Użytkownicy
  • 2363 postów

  • Rejestracja: 16 sierpień 07
  • Płeć:Mężczyzna

Napisano 12 czerwiec 2011 - 10:44

Najwyraźniej w pracy mam postawiony obok siebie FTP i SFTP z tym samym userem i hasłem co wiele wyjaśnia.
Prawdę mówiąc logika była mniej więcej taka:
- w pracy:
- WinSCP przez SFTP - OK
- zróbmy skrypt z użyciem ftplib - OK
wniosek: ftplib działa z SFTP :)
- w domu:
- WinSCP przez SFTP - OK
- ftplib - ERROR
wniosek: wtf ?

Natomiast mylące pozostaje, dlaczego wysyłane jest:
*get* 'SSH-2.0-OpenSSH_5.5\r\n'
co automatycznie sugeruje SSH.

Dobra dzięki,
potrzebowałem potrenować użycie ftplib więc postawię ftp.
  • 0

F7-14/18/19.32/64 | fluxbox/openbox/xfce/gnome2/mate
poradnik@wiki


jedral.one.pl





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych użytkowników