1

在 OSX 中,我有一个已挂载的网络共享,即“ /Volumes/tmp”。我想获取共享位置的 url 或服务器主机名。所以想 ' cifs://10.0.1.103/tmp' 或服务器名称。不确定如何在 OSX 的 Python 2.7 中执行此操作

4

1 回答 1

0

我在 SO 上找到了两个建议使用的答案dfGet 'unc' path in OSX of Mounted shareHow do I get the server hostname from amounted directory with cocoa/obj-c?

以下代码是第一个答案的改进版本(我的编辑显然没有被批准):

import subprocess

df = subprocess.Popen(['df', '/Volumes/link/to/some/folder'],
                      stdout = subprocess.PIPE)
outputLine = df.stdout.readlines()[1]
uncPath = outputLine.split()[0]
print uncPath

警告:据我所知,这并没有给你协议(“smb”,但也许这暗示了以两个斜杠开头的路径),我更喜欢不涉及解析的解决方案(这可能会因空格而失败在用户/服务器/共享名称中)。我的预感是可以尝试向 Finder 询问该信息(例如,通过服务,或者可能使用 pyobjc)。

顺便说一句:似乎是等价的smb://cifs://在 OS X 10.9 中,我可以将两者与open命令一起使用来打开远程共享,并且得到相同的df输出和行为。如果您将协议放在前面uncPath以获得完整的 URL(或以后可以使用的东西open),这可能会很有趣。另请注意,smb://-style URL 也应该在 Linux 上工作(在 KDE 和 Gnome 的文件管理器中)。

更新:df在 Linux 上具有 cifs 挂载的行为和输出格式,因此相同的代码可以在 Linux 上运行!

于 2015-01-19T08:24:47.197 回答