同一网络上设备的磁盘空间


Disk space of a device on the same network

所以我要做的核心事情是从同一网络上的其他设备获取磁盘空间。

为此,我使用 PHP 函数 disk_total_space()。我正在使用连接字符串''192.168.0.1'c$.

所以总的来说,我会有:

disk_total_space('''''192.168.0.1''c$');

但是,我对此连接字符串有一些疑问,首先是:

  1. 此"URL"与什么协议连接?
  2. 为什么它在驱动程序末尾需要一个 $?

现在,我还需要使用连接字符串提供用户名和密码。但是我不知道如何将它与我拥有的连接字符串融合在一起。我试图用FTP协议和HTTPS协议提供用户名和密码,但似乎都不起作用。

https:''''username:password@''''192.168.0.1''c$
ftp:''''username:password@''''192.168.0.1''c$

正如你可能注意到的那样,我是这些协议的新手,所以我希望任何人都可以向我解释这一点。

我对 php 一无所知,但似乎要回答这个问题,你不需要 php 知识......希望这有帮助:

1. 这个"url"用什么协议连接?

这称为 UNC 路径。 从维基查看更多详细信息:路径(计算)

报价:

A UNC path describes the location of a volume, directory, or file. The format for a UNC path is ''server'volume'directory'file and is not case-sensitive.

2.为什么在驱动程序末尾需要$ ?

$代表隐藏的共享,请参阅知识库Microsoft

3. 对于您的最后一个问题,"在 UNC 路径中传递 UNC 用户名和密码"

超级用户上有一个类似问题的答案。

从@grawity的答案中引用答案

在 Windows 上,不能将凭据放在 UNC 路径中。您必须使用 net userunas /netonly 或在 Windows 询问时提供它们。(如果你有一些编程技能,你可以使用 CredWrite() 将 SMB 密码存储为"域凭据",这相当于在 Windows 中选中"记住密码"框。

在Linux上,这取决于程序。

  • GNOME的Gvfs接受user@host语法,但似乎完全忽略了密码。(但是,您可以事先将其存储在 GNOME 密钥环中。

  • smbclient使用与 Windows 相同的 UNC 语法;但是,它有一个--authentication-file选项,可以从中读取凭据。

  • 上面的两个程序都使用libsmbclient,并且可以使用Kerberos身份验证而不是密码:运行kinit user@YOUR.DOMAIN并使用smbclient -k //host/share。这比密码身份验证更安全。

请注意,不推荐将密码放入 URI,您不应依赖它在任何地方都受支持。