omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    Python SMB Connection

    Pythonista
    3
    85
    24339
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • cvp
      cvp @DavinE last edited by

      @DavinE said:

      should i install it ? and try

      Sure

      1 Reply Last reply Reply Quote 0
      • DavinE
        DavinE @cvp last edited by

        @cvp said:

        @DavinE did you see the link in my post?

        yeah sry, that's my mistake....

        i get this output:

        Error on line 47 TypeError 'NoneType' object is not subscriptable
        Error on line 62 TypeError str, bytes or bytearray expected, not NoneType
        Error on line 87 NotReadyError SMB connection not authenticated
        
        cvp 2 Replies Last reply Reply Quote 0
        • cvp
          cvp @DavinE last edited by

          @DavinE strange, I'll check, my smb connection works

          DavinE 1 Reply Last reply Reply Quote 0
          • DavinE
            DavinE @cvp last edited by

            @cvp said:

            @DavinE strange, I'll check, my smb connection works

            Thanks for your Work @cvp

            1 Reply Last reply Reply Quote 0
            • cvp
              cvp @DavinE last edited by cvp

              @DavinE could you try, with your own user, pwd, server

              from SMB_client import SMB_client
              import keychain
              
              server_ftp = 'VOO-USB'
              user = 'voo'
              # get password from keychain
              pwd = keychain.get_password(server_ftp,user)
              my_smb = SMB_client(username=user,password=pwd, smb_name='VOO-USB', print_errors=False)
              my_smb.connect()
              print(my_smb.getRemoteDir('', '*'))
              
              DavinE 1 Reply Last reply Reply Quote 0
              • cvp
                cvp last edited by

                smb_files = my_smb.getRemoteDir('', '*')
                for smb_file in smb_files:
                	smb_filename = smb_file.filename
                	print(smb_file.filename)
                
                1 Reply Last reply Reply Quote 0
                • DavinE
                  DavinE @cvp last edited by

                  @cvp said:

                  @DavinE could you try, with your own user, pwd, server

                  from SMB_client import SMB_client
                  import keychain
                  
                  server_ftp = 'VOO-USB'
                  user = 'voo'
                  # get password from keychain
                  pwd = keychain.get_password(server_ftp,user)
                  my_smb = SMB_client(username=user,password=pwd, smb_name='VOO-USB', print_errors=False)
                  my_smb.connect()
                  print(my_smb.getRemoteDir('', '*'))
                  

                  i get None

                  but is it correct that i set my pass in server_ftp

                  cvp 3 Replies Last reply Reply Quote 0
                  • cvp
                    cvp @DavinE last edited by

                    @DavinE said:

                    but is it correct that i set my pass in server_ftp

                    Forget my keychain process. In all my scripts, I store my passwords in keychain.
                    Use your username='xxx',password='xxx',smb_name='xxx'

                    1 Reply Last reply Reply Quote 0
                    • cvp
                      cvp @DavinE last edited by cvp

                      @DavinE and put your ip as server (my server has an ip but also a name)

                      1 Reply Last reply Reply Quote 0
                      • DavinE
                        DavinE last edited by

                        @cvp
                        sry.... i'm confused....

                        smb_name = "" # That is my Folder share name or ??
                        and where i need to put my Server ip ?

                        i have this:

                        my_smb = SMB_client(username=user,password=pwd, smb_name='home', print_errors=False)
                        
                        cvp 1 Reply Last reply Reply Quote 0
                        • cvp
                          cvp @DavinE last edited by

                          @DavinE this should be ok if you know the ip but not the smb name

                          ip = ....
                          my_smb = SMB_client()
                          smb_name = my_smb.getBIOSName(ip)
                          print(smb_name)
                          
                          my_smb = SMB_client(username=user,password=pwd, smb_name=smb_name, print_errors=False)
                          my_smb.connect()
                          
                          smb_files = my_smb.getRemoteDir('', '*')
                          for smb_file in smb_files:
                          	smb_filename = smb_file.filename
                          	print(smb_file.filename)
                          
                          DavinE 1 Reply Last reply Reply Quote 0
                          • cvp
                            cvp @DavinE last edited by

                            @DavinE said:

                            sry.... i'm confused..

                            I'm too, forget all except my just previous post

                            1 Reply Last reply Reply Quote 0
                            • DavinE
                              DavinE @cvp last edited by

                              @cvp said:

                              @DavinE this should be ok if you know the ip but not the smb name

                              print(smb_name)
                              

                              This is: ELEKTROTECHNIK
                              i think that's correct!

                              smb_files = my_smb.getRemoteDir('', '*')
                              print(smb_files)
                              

                              Here i get None

                              cvp 1 Reply Last reply Reply Quote 0
                              • cvp
                                cvp @DavinE last edited by

                                @DavinE said:

                                Here i get None

                                I you used my last post, that would say the ip is not correct.
                                The first my_smb is used to get the smb_name from the ip and the second uses the smb_name.

                                I print the smb_name, do you see it?

                                1 Reply Last reply Reply Quote 0
                                • cvp
                                  cvp last edited by cvp

                                  Now, this should work if you know the ip

                                  from SMB_client import SMB_client
                                  
                                  ip = 'xxx.xxx.xxx.xxx'
                                  user = 'xxxxxx'
                                  pwd = 'xxxxx'
                                  my_smb = SMB_client()
                                  smb_name = my_smb.getBIOSName(ip)
                                  print('smb_name=',smb_name)
                                  my_smb = SMB_client(username=user,password=pwd, smb_name=smb_name, print_errors=False)
                                  my_smb.connect()
                                  smb_files = my_smb.getRemoteDir('', '*')
                                  for smb_file in smb_files:
                                  	smb_filename = smb_file.filename
                                  	print(smb_file.filename)
                                  
                                  DavinE 1 Reply Last reply Reply Quote 0
                                  • DavinE
                                    DavinE @cvp last edited by

                                    @cvp said:

                                    Now, this should work if you know the ip

                                    from SMB_client import SMB_client
                                    
                                    ip = 'xxx.xxx.xxx.xxx'
                                    user = 'xxxxxx'
                                    pwd = 'xxxxx'
                                    my_smb = SMB_client()
                                    smb_name = my_smb.getBIOSName(ip)
                                    print('smb_name=',smb_name)
                                    my_smb = SMB_client(username=user,password=pwd, smb_name=smb_name, print_errors=False)
                                    my_smb.connect()
                                    smb_files = my_smb.getRemoteDir('', '*')
                                    for smb_file in smb_files:
                                    	smb_filename = smb_file.filename
                                    	print(smb_file.filename)
                                    

                                    so i tried it with my Raspberry Pi2....
                                    here is my output:

                                    pi@RaspberryPi2:~/TEST/smb $ python smb_de.py 
                                    ('smb_name=', 'ELEKTROTECHNIK')
                                    .
                                    ..
                                    Drive
                                    

                                    on my iPad pro 12.9" i get only:

                                    smb_name=, ELEKTROTECHNIK
                                    

                                    with the same user and pwd....
                                    this is a iPad problem or ?

                                    cvp 2 Replies Last reply Reply Quote 0
                                    • cvp
                                      cvp @DavinE last edited by cvp

                                      @cvp said:

                                      my_smb = SMB_client()
                                      smb_name = my_smb.getBIOSName(ip)
                                      print('smb_name=',smb_name)

                                      These lines do not use user nor pwd, it is only to get the smb_name that you need to use in tHe second. Note that if you know this smb_name, the ip is not necessary

                                      my_smb = SMB_client(username=user,password=pwd, smb_name=smb_name, print_errors=False)
                                      my_smb.connect()
                                      smb_files = my_smb.getRemoteDir('', '*')
                                      for smb_file in smb_files:
                                      	smb_filename = smb_file.filename
                                      	print(smb_file.filename)
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • cvp
                                        cvp @DavinE last edited by

                                        @DavinE said:

                                        pi@RaspberryPi2:~/TEST/smb $ python smb_de.py

                                        This line is printed by the smb client, and it is not the same on iPad, it does not print anything, it is normal.

                                        But is the connection ok?

                                        1 Reply Last reply Reply Quote 0
                                        • DavinE
                                          DavinE last edited by DavinE

                                          @cvp ,

                                          this is my test code for my connection:

                                          import smb, socket
                                          from smb.SMBConnection import SMBConnection
                                          from nmb.NetBIOS import NetBIOS
                                          
                                          netbios = NetBIOS()
                                          
                                          user = 'xxx'
                                          pwd = 'xxx'
                                          
                                          share_name          = "ELEKTROTECHNIK"
                                          user_name           = user
                                          password            = pwd
                                          server_IP           = "xxx.xxx.178.251"
                                          local_machine_name  = socket.gethostname()
                                          server_machine_name = netbios.queryIPForName(server_IP)
                                          
                                          print(server_machine_name[0])
                                          
                                          # create and establish connection
                                          conn = SMBConnection(user_name, password, local_machine_name, server_machine_name[0], domain="WORKGROUP", use_ntlm_v2=True)
                                          # 139
                                          # 445
                                          print(conn.connect(server_IP, 139))
                                          

                                          on my iPad i get here False

                                          on my Raspi2 i get True.....

                                          or need i to "translate" my Pwd on my iPad in Base64 ?

                                          cvp 2 Replies Last reply Reply Quote 0
                                          • cvp
                                            cvp @DavinE last edited by

                                            @DavinE said:

                                            or need i to "translate" my Pwd on my iPad in Base24 ?

                                            No.

                                            Did you retry with the other port? 445

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Powered by NodeBB Forums | Contributors