1.windows实现

在 Windows 中,如果您无法访问共享文件夹并收到类似的错误消息,可能是由于共享资源的权限配置不正确所致。为了解决这个问题,您可以尝试按照以下步骤设置共享权限:
       0. 添加用户访问: 安全选项添加对应用户如everyone

  1. 确认网络连接: 确保您的计算机和目标计算机(192.168.2.87)在同一局域网中,并且网络连接正常。

  2. 启用文件和打印机共享: 打开控制面板,进入“网络和共享中心”,确保启用了“文件和打印机共享”。

  3. 设置共享文件夹: 在要共享的文件夹上右键点击,选择“属性”。

  4. 共享设置: 在“属性”窗口中,点击“共享”选项卡。

  5. 设置共享: 点击“高级共享”按钮,在弹出的“高级共享”窗口中,勾选“共享此文件夹”。

  6. 设置共享名称: 可以使用默认的共享名称,也可以点击“权限”按钮自定义共享名称。

  7. 共享权限: 在“权限”窗口中,添加需要访问权限的用户或用户组。如果您希望所有人都能访问,可以添加“Everyone”用户组,并给予适当的权限(如读取权限或读写权限)。

  8. 保存设置: 确认设置后,点击“确定”按钮保存共享设置。

  9. 检查防火墙和安全设置: 确保没有防火墙或安全软件阻止对共享资源的访问。您可以尝试在目标计算机上暂时禁用防火墙进行测试。

完成上述步骤后,您的共享文件夹应该已经设置好,其他计算机应该能够访问它。请确保在共享设置中谨慎处理权限,以确保文件夹的安全性和隐私性。如果问题仍然存在,您可能需要联系网络管理员或更专业的技术支持,以获取进一步的帮助和解决方案。

 

import subprocess
import os

# 设置Windows共享信息
share_username = "datagrand"
share_password = "1qaz@WSX"
share_server = "192.168.2.87"
share_folder = "share"

# 构建UNC路径
unc_path = f"\\\\{share_server}\\{share_folder}"

# 使用net use命令进行访问
command = f"net use {unc_path} /user:{share_username} {share_password}"
subprocess.run(command, shell=True)

# 在UNC路径下进行文件操作,例如列出文件
file_list = os.listdir(unc_path)
for file in file_list:
    print(file)

# 使用完毕后取消访问
subprocess.run(f"net use {unc_path} /delete", shell=True)

2.linux实现

import subprocess
import shutil
import time

def copy_to_linux_share(source_file):
    try:
        # 设置共享文件夹的本地挂载点
        mount_point = "/mnt/bak"

        # 替换为实际的 Windows 主机名、用户名和密码
        share_folder = "//m.yys.pub/bakups"
        windows_username = ""
        windows_password = ""

        # 使用 mount.cifs 挂载共享文件夹
        mount_cmd = f"mount.cifs {share_folder} {mount_point} -o username={windows_username},password={windows_password}"
        subprocess.run(mount_cmd, shell=True)
        print(mount_cmd)

        # 复制文件到共享文件夹,最多尝试 30 次,每次间隔 2 秒
        for i in range(30):
            try:
                shutil.copy(source_file, share_folder.replace('/', '\\'))
                break
            except Exception as e:
                time.sleep(2)

        # 卸载共享文件夹
        umount_cmd = f"umount {mount_point}"
        subprocess.run(umount_cmd, shell=True)

        print(f"Linux: File copied successfully to {share_folder}")

    except Exception as e:
        print(f"Error: {e}")

# 提供 source_file 的值并调用函数
source_file_path = "/path/to/your/file.txt"
copy_to_linux_share(source_file_path)

这个脚本的作用是将文件从本地复制到 Windows 共享文件夹,具体步骤如下:

  1. 设置共享文件夹的本地挂载点为 /mnt/bak
  2. 替换为实际的 Windows 主机名、用户名和密码,构建 mount.cifs 命令。
  3. 使用 mount.cifs 命令挂载共享文件夹到本地挂载点。
  4. 使用 shutil.copy 将文件复制到共享文件夹。脚本会尝试最多 30 次,每次间隔 2 秒。
  5. 如果复制成功,脚本会输出成功信息;否则,脚本会输出错误信息。
  6. 使用 umount 命令卸载共享文件夹。

需要注意的是,这个脚本中使用了 subprocess.run 函数执行命令,其中 shell=True 允许通过 shell 解释执行命令。在实际生产环境中,确保仔细验证和过滤用户提供的输入,以防止潜在的安全问题。