Bạn có thể cho tôi ví dụ về việc sử dụng thư viện pysmb để kết nối với một số máy chủ samba không? Tôi đã đọc có lớp smb.SMBConnection.SMBConnection (username, password, MY_NAME, REMOTE_NAME, domain = '', use_ntlm_v2 = True) nhưng tôi không thể tìm ra cách để sử dụng nóVí dụ về pysmb
Trả lời
Lớp SMBConnection sẽ cho phép bạn truy cập các tệp trên máy chủ Samba từ xa trong chế độ chặn.
Để lấy danh sách các tập tin trong một thư mục chia sẻ trên máy chủ từ xa,
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', '/')
Các filelist trở sẽ là một danh sách các SharedFile
trường.
Ví dụ khác có thể được tìm thấy trong thư mục tests/SMBConnectionTests
trong gói nguồn pysmb.
Gần đây tôi đã sử dụng pysmb để liệt kê các chia sẻ mạng, và thấy rằng không dễ dàng để tìm các ví dụ tốt/hoàn chỉnh. Tôi muốn giới thiệu bạn đến một kịch bản nhỏ mà tôi đã viết cho liệt kê cổ phiếu smb với pysmb: https://github.com/n3if/scripts/tree/master/smb_enumerator
Vì lợi ích của sự hoàn chỉnh, cũng, tôi gửi ở đây đoạn mã mà hoàn thành kết nối và đếm:
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')
Điều gì sẽ xảy ra nếu máy chủ samba có thông tin đăng nhập 'GUEST'. những gì để cung cấp cho tên người dùng và mật khẩu trường trong trường hợp đó? – user2033758
Tôi muốn nói User = GUEST và Password = '' nhưng tôi nên thử nó. – neif
Bạn đã lưu tôi. Tôi đã sử dụng PySmbClient nhưng không thể làm cho nó hoạt động. Cảm ơn bạn. – grantathon
Cảm ơn. Các biến client_machine_name và remote_machine_name có thể trông như thế nào? Tôi sử dụng một phần địa chỉ nào? thế nào để tôi bao gồm "smb: //" trong tên từ xa? – hendrixski