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

2020-07-24 22:55:11 +08:00
 youthfire

需求:同一局域网目标服务器 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()

2398 次点击
所在节点    Python
14 条回复
epicnoob
2020-07-24 23:02:06 +08:00
python -m http.server 6666
polaa
2020-07-24 23:16:06 +08:00
不是很懂目的是什么。。。。scp 不行么
leimao
2020-07-24 23:17:47 +08:00
asyncssh 用一下
plko345
2020-07-24 23:22:39 +08:00
那你到底用什么协议,又是 ssh 又是 smb 的,为什么要同时用,有测试过可用吗?
youthfire
2020-07-24 23:24:42 +08:00
@plko345 #4 平时都是 smb,搞不出就一顿乱试了。主要是 python 中一段自动化需要经常从目标机器拷贝一个文件,现在都是手动在下载。
jimrok
2020-07-24 23:25:06 +08:00
rsync 不行吗?
youthfire
2020-07-24 23:33:14 +08:00
@jimrok 是指用 subprocess 调用外部命令? 想用 py 相关的库解决.
laminux29
2020-07-24 23:50:02 +08:00
局域网文件拷贝,直接 tcp 不香吗,干嘛要整 pysmb 或 paramiko 。
youthfire
2020-07-24 23:57:36 +08:00
@laminux29 从来没有接触过,我去查查学习下,谢谢
renmu123
2020-07-25 10:07:40 +08:00
paramiko 走得是 ssh,文件传输是 sftp,你试试看能不能通过一台电脑 ssh 到另一台电脑
lolizeppelin
2020-07-25 10:10:47 +08:00
文件传输 l 老老实实调用 shell 才是正道,因为 python 太慢了,ssh 协议这种有加密解密的更慢

除非有比较特殊的文件过滤机制必须在代码里,才考虑用 python 写传输过程
xyjincan
2020-07-25 10:28:21 +08:00
python 起个 http 服务啊
aladdindingding
2020-07-25 11:34:05 +08:00
@lolizeppelin python 表示不背慢这个锅
youthfire
2020-07-25 12:06:14 +08:00
@renmu123 谢谢提醒! 我检查了 sharing 设置,打开了 file sharing,但原来还有个 remote login 控制 ssh 部分. 回头我再试下去.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/692919

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX