在OSX中获取已安装共享的“服务器”路径或服务器主机名

时间:2014-07-21 11:48:54

标签: python macos share mount server-name

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

1 个答案:

答案 0 :(得分:0)

我在SO上找到了两个答案,建议使用dfGet 'unc' path in OSX of mounted shareHow do I get the server hostname from a mounted 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)。

BTW:smb://cifs://似乎相同。使用OS X 10.9,我可以使用open命令打开远程共享,并获得相同的df输出和行为。如果您将协议放在uncPath前面以获取完整的URL(或稍后可以与open一起使用的内容),这可能会很有趣。另请注意,smb://样式的URL也适用于Linux(在KDE和Gnome的文件管理器中)。

UPDATE:Linux上的df具有cifs挂载的行为和输出格式,因此相同的代码适用于Linux!