【问题标题】:Get 'Server' path or sever host name of mounted share in OSX在 OSX 中获取挂载共享的“服务器”路径或服务器主机名
【发布时间】:2014-09-11 21:58:45
【问题描述】:

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

【问题讨论】:

    标签: python macos share mount server-name


    【解决方案1】:

    我在 SO 上找到了两个建议使用 df 的答案:Get '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)。

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

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

    【讨论】:

      猜你喜欢
      • 2019-05-04
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 2015-01-07
      • 2011-01-09
      • 1970-01-01
      相关资源
      最近更新 更多