2012-04-20 16 views
7

Czy możesz podać przykład użycia biblioteki pysmb do połączenia z serwerem samby? Czytałem tam klasa smb.SMBConnection.SMBConnection (nazwa użytkownika, hasło, my_name, REMOTE_NAME, domena = '', use_ntlm_v2 = True) ale nie mogę dowiedzieć się, jak go używaćPrzykład pysmb

Odpowiedz

6

Klasa SMBConnection pozwoli ci uzyskać dostęp do plików na zdalnym serwerze Samby w trybie blokowania.

Aby pobrać listę plików w folderze udostępnionym na serwerze zdalnym,

conn = SMBConnection(userid, password, client_machine_name, remote_machine_name, use_ntlm_v2 = True) 
conn.connect(server_ip, 139) 
filelist = conn.listPath('shared_folder_name', '/') 

Zwrócona lista plików będzie lista SharedFile przypadkach.

Więcej przykładów można znaleźć w folderze tests/SMBConnectionTests w pakiecie źródłowym pysmb.

+1

Dzięki. Jak powinny wyglądać zmienne client_machine_name i remote_machine_name? Z której części adresu korzystam? dołączyć "smb: //" do nazwy zdalnej? – hendrixski

6

Używam pysmb do wyliczania udziałów sieciowych ostatnio i okazało się, że nie jest tak łatwo znaleźć dobre/pełne przykłady. Chciałbym skierować do małego skryptu, który napisałem na wyliczanie udziałów SMB pysmb: https://github.com/n3if/scripts/tree/master/smb_enumerator

Dla kompletności, a także, mam zakładać tu fragment kodu, który realizuje połączenie i liczby:

try: 
    conn = SMBConnection(username,password,'name',system_name,domain,use_ntlm_v2=True, 
         sign_options=SMBConnection.SIGN_WHEN_SUPPORTED, 
         is_direct_tcp=True) 
    connected = conn.connect(system_name,445) 

    try: 
     Response = conn.listShares(timeout=30) # obtain a list of shares 
     print('Shares on: ' + system_name) 

     for i in range(len(Response)): # iterate through the list of shares 
      print(" Share[",i,"] =", Response[i].name) 

      try: 
       # list the files on each share 
       Response2 = conn.listPath(Response[i].name,'/',timeout=30) 
       print(' Files on: ' + system_name + '/' + " Share[",i,"] =", 
             Response[i].name) 

        for i in range(len(Response2)): 
         print(" File[",i,"] =", Response2[i].filename) 

      except: 
       print('### can not access the resource') 
    except: 
     print('### can not list shares')  
except: 
    print('### can not access the system') 
+1

Co jeśli serwer samby ma login "GOŚĆ". co w takim przypadku podać w polu nazwy użytkownika i hasła? – user2033758

+1

Powiedziałbym, że użytkownik = GOŚĆ i hasło = "", ale powinienem spróbować. – neif

+2

Uratowałeś mnie. Używałem PySmbClient, ale po prostu nie mogłem go uruchomić. Dziękuję Ci. – grantathon