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
-
@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)
-
@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 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?
-
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)
-
@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 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)
-
@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?
-
@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 ?
-
@DavinE said:
or need i to "translate" my Pwd on my iPad in Base24 ?
No.
Did you retry with the other port? 445
-
@cvp
yes, its the sameFalse
-
@DavinE you cold also remove ,use_ntlm_v2 = True) in the source code of SmB_client.py
Just to check
-
@cvp
Its the same... -
Do you know what protocol Pythonista use ?
SMB1; SMB2; SMB3 ? -
@DavinE no idea.
Your code works on my NAS -
@cvp
Which on do you have ? WD or ?and do you mean on your iPad ?
-
@DavinE my NAS is a WD
I work on an iPad. WitH your code.
It also works with a flash drive connected in usb slot of my router, drive that I always reach in smb. -
Obviously, the smb module in Pythonista is old and is not identical as on your Radpberry.
-
@cvp said:
@DavinE my NAS is a WD
I work on an iPad. WitH your code.
It also works with a flash drive connected in usb slot of my router, drive that I always reach in smb.When i use my Raspi with the data i get this:
RASPBERRYPI4 Error on line 87 OperationFailure Failed to list on Ebner-Elektrotechnik: Unable to connect to shared device ==================== SMB Message 0 ==================== SMB Header: ----------- Command: 0x03 (SMB2_COM_TREE_CONNECT) Status: 0x00000000 Flags: 0x00 PID: 1563 MID: 9 TID: 0 Data: 78 bytes b'09000000480046005c005c005200410053005000420045005200520059005000490034005c00450062006e00650072002d0045006c0065006b00740072006f0074006500630068006e0069006b00' SMB Data Packet (hex): ---------------------- b'fe534d42400000000000000003000000000000000000000009000000000000001b06000000000000979d8799000000000000000000000000000000000000000009000000480046005c005c005200410053005000420045005200520059005000490034005c00450062006e00650072002d0045006c0065006b00740072006f0074006500630068006e0069006b00' ==================== SMB Message 1 ==================== SMB Header: ----------- Command: 0x03 (SMB2_COM_TREE_CONNECT) Status: 0xC0000022 Flags: 0x01 PID: 1563 MID: 9 TID: 0 Data: 9 bytes b'090000000000000000' SMB Data Packet (hex): ---------------------- b'fe534d4240000000220000c003000100010000000000000009000000000000001b06000000000000979d87990000000000000000000000000000000000000000090000000000000000' []
this is a shared folder on my Pi
Ebner-Elektrotechnik