Python 远程复制文件(局域网内另一台 Mac 到本 Mac)始终不成功 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
youthfire
V2EX    Python

Python 远程复制文件(局域网内另一台 Mac 到本 Mac)始终不成功

  •  
  •   youthfire 2020-07-24 22:55:11 +08:00 3040 次点击
    这是一个创建于 1975 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求:同一局域网目标服务器 Mac 名是 tommac,用户 tom,ip:192.168.50.4,本地服务器 Mac 名是 jasonmac,用户 jason.需要把 /Users/tom/Documents/working/purchase.xlsx 复制到 /Users/jasonmac/Documents/working

    尝试了 pysmb 和 paramiko 两个库

    前者报 not connected,后者报 Error reading SSH protocol banner.总之就是各种连接不上目标服务器.(确认目标服务器已经打开共享,并且在网络里可以访问) 同时我也有点搞不清楚,mac 的计算机名到底应该是 jason 这种,还是 jason.local,似乎尝试了也都错.端口不管是官网范例的 139,还是很多人用的 445 都不行.

    stackoverflow 上看了好半天都研究不出,有没有熟悉的朋友说下可能的原因?或者推荐下自己熟悉的库 预先感谢大家!

    下面是 pysmb 时候的一段代码(import 部分忽略)

    share_name = "jason" user_name = "jason" password = "57777" local_machine_name = "tommac" server_machine_name = "jasonmac" server_ip = "192.168.50.4"

    cOnn= SMBConnection(user_name, password, local_machine_name, server_machine_name, use_ntlm_v2=True) assert conn.connect(server_ip, 139) print('connected')

    file_obj = tempfile.NamedTemporaryFile() file_name = file_obj.name file_attributes, copysize = conn.retrieveFile(share_name, "/Documents/working/purchase.xlsx", file_obj) print(copysize) file_obj.close() shutil.copy(file_name, "/Users/tom/Documents/working/purchase.xlsx") conn.close()

    第 1 条附言    2020-07-25 21:05:37 +08:00
    最后找到了原因.因为代码有部分内容需要连 google drive,所以全局使用了 socks 代理.把代理部分作非全局化处理后,成功传输.用的 paramiko,速度很快,必要参数也比 pysmb 少
    14 条回复    2020-07-25 12:06:14 +08:00
    epicnoob
        1
    epicnoob  
       2020-07-24 23:02:06 +08:00   1
    python -m http.server 6666
    polaa
        2
    polaa  
       2020-07-24 23:16:06 +08:00
    不是很懂目的是什么。。。。scp 不行么
    leimao
        3
    leimao  
       2020-07-24 23:17:47 +08:00 via iPhone
    asyncssh 用一下
    plko345
        4
    plko345  
       2020-07-24 23:22:39 +08:00 via Android
    那你到底用什么协议,又是 ssh 又是 smb 的,为什么要同时用,有测试过可用吗?
    youthfire
        5
    youthfire  
    OP
       2020-07-24 23:24:42 +08:00 via iPhone
    @plko345 #4 平时都是 smb,搞不出就一顿乱试了。主要是 python 中一段自动化需要经常从目标机器拷贝一个文件,现在都是手动在下载。
    jimrok
        6
    jimrok  
       2020-07-24 23:25:06 +08:00
    rsync 不行吗?
    youthfire
        7
    youthfire  
    OP
       2020-07-24 23:33:14 +08:00
    @jimrok 是指用 subprocess 调用外部命令? 想用 py 相关的库解决.
    laminux29
        8
    laminux29  
       2020-07-24 23:50:02 +08:00
    局域网文件拷贝,直接 tcp 不香吗,干嘛要整 pysmb 或 paramiko 。
    youthfire
        9
    youthfire  
    OP
       2020-07-24 23:57:36 +08:00
    @laminux29 从来没有接触过,我去查查学习下,谢谢
    renmu123
        10
    renmu123  
       2020-07-25 10:07:40 +08:00 via Android
    paramiko 走得是 ssh,文件传输是 sftp,你试试看能不能通过一台电脑 ssh 到另一台电脑
    lolizeppelin
        11
    lolizeppelin  
       2020-07-25 10:10:47 +08:00
    文件传输 l 老老实实调用 shell 才是正道,因为 python 太慢了,ssh 协议这种有加密解密的更慢

    除非有比较特殊的文件过滤机制必须在代码里,才考虑用 python 写传输过程
    xyjincan
        12
    xyjincan  
       2020-07-25 10:28:21 +08:00   1
    python 起个 http 服务啊
    aladdindingding
        13
    aladdindingding  
       2020-07-25 11:34:05 +08:00
    @lolizeppelin python 表示不背慢这个锅
    youthfire
        14
    youthfire  
    OP
       2020-07-25 12:06:14 +08:00
    @renmu123 谢谢提醒! 我检查了 sharing 设置,打开了 file sharing,但原来还有个 remote login 控制 ssh 部分. 回头我再试下去.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     978 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 18:31 PVG 02:31 LAX 10:31 JFK 13:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86