Python验证SAMBA共享

3 投票
1 回答
2449 浏览
提问于 2025-04-15 19:03

我可以在没有身份验证的网络共享上顺利地映射驱动器。但一旦我尝试用用户名和密码进行身份验证,就出现了一些问题。下面是我当前的代码示例,以及我一直收到的错误信息。

#!/usr/bin/python
# Drive Map Script
import pywintypes
import win32com.client

# Disconnect previous mapped drives
testnetwork = win32com.client.Dispatch('Wscript.Network')
network_drives = testnetwork.EnumNetworkDrives()
for mapped_drive in [network_drives.Item(i)
                     for i in range(0, network_drives.Count() -1 , 2)
                     if network_drives.Item(i)]:
    testnetwork.RemoveNetworkDrive(mapped_drive, True, True)

# Mount the drives
drive_mapping = [
    ('z:', '\\\\192.168.1.100\\Some_Share', 'someuser', 'somepass')]

for drive_letter, network_path, user_name, user_pass in drive_mapping:
    try:
        testnetwork.MapNetworkDrive(drive_letter, network_path)
    except Exception, err:
        print err

执行代码时产生的错误信息如下:

(-2147352567, '发生异常。', (0, u'WSHNetwork.MapNetworkDrive', u'登录失败:未知用户名或 密码错误。\r\n', None, 0, -2147023570), None)

1 个回答

2

你没有把 user_nameuser_pass 传给 MapNetworkDrive。试试这样做:

testnetwork.MapNetworkDrive(drive_letter, network_path, True, user_name, user_pass)

注意:这里传入的 True 是一个标志,表示这个映射信息是否存储在当前用户的个人资料中。

撰写回答