有没有办法通过 ssh 将 Python psutil 模块发送到没有互联网访问权限的计算机?

Is there a way to ship the Python psutil module over ssh to a computer without internet access?

我正在制作一个远程 Linux 工件收集脚本,并且想使用 psutil 模块,因为它包含许多方便的函数,重写起来会很痛苦。

问题是用于此操作的计算机不一定连接到 Internet。有没有办法通过 ssh 发送模块以便我可以远程使用它?

我在我的个人机器上试过这个,没有 SSH 部分。但是,为了完整性和易用性,我将详细说明如何使用 scp 将其上传到另一台设备。因此,您可能会遇到一些我没有遇到的错误。您已收到警告。

第 1 步:下载 psutil

在安装了 pip 的机器上,使用以下命令下载 psutil 软件包:

pip download psutil

使用 ls(在 Linux 上)我们可以看到我们现在在当前目录中有一个 *.tar.gz 文件。在撰写本文时,当前 psutil 版本为 5.6.3,因此文件名为 "psutil-5.6.3.tar.gz"

第 2 步:将文件上传到所需设备

确保您和目标设备都连接到同一个 LAN,并且您知道目标设备的 IP 地址。我将此 IP 地址表示为 "W.X.Y.Z"。

要使用 SSH 上传文件,运行:

scp /path/to/*.tar.gz username@W.X.Y.Z:/desired/path/to/*.tar.gz

如果您有 SSH 密钥并想使用它登录,请将其与 -i 标志一起传递:

scp -i /path/to/ssh/key/file /path/to/*.tar.gz username@W.X.Y.Z:/desired/path/to/*.tar.gz

第 3 步:通过 SSH 连接到所需设备

这一步非常简单,但我把它作为自己的一步,因为如果您不知道自己在做什么,很容易出错。

通过 SSH 连接到您将文件上传到的设备:

ssh username@W.X.Y.Z

如果您没有 SSH 密钥,或者它不在 SSH 预期的位置,您可能需要提供密码。

第四步:安装我们刚刚上传的包

现在只需安装软件包!

pip install /path/to/*.tar.gz

如果您收到一条错误消息:

ERROR: Cannot uninstall 'psutil'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

那么您应该已经安装了 psutil。您可以通过 运行ning:

检查
pip list | grep '^psutil'

在您尝试安装包的机器上。

编辑

此外,如果您的 Python 脚本在 Python 3 而不是 Python 2(它应该是因为 Python 2 生命周期结束是一月2020 年 1 日),将我刚刚使用 pip 的所有地方替换为 pip3