在python中通过ssh读取值

2024-04-20 11:09:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能够收集服务器上cpu数量的值以及存储空间等,并将它们分配给python脚本中的局部变量。我已经设置了paramiko,所以我可以通过SSH连接到远程Linux节点并在它们上运行任意命令,然后将输出返回到脚本。然而,许多命令都非常冗长,“比如df-h”,而我只想分配一个整数或值。在

对于cpu数量的情况,有Python功能,比如通过psutil模块来获得这个值。例如'psutil.NUM_CPU'返回一个整数。然而,虽然我可以在本地运行这个,但是我不能在远程节点上执行它,因为它们没有配置python环境。在

我想知道手动解析linux命令的输出(比如df-h等)然后从中获取一个整数(类似于bash有一个“cut”函数)是多么常见。或者在每个远程服务器上设置一个环境是否更好(或者更好的方法)。在


Tags: 命令服务器脚本paramikodf数量节点远程
3条回答

如果您可以将自己的程序或脚本放在远程计算机上,您可以做以下几件事:

  1. 在远程机器上编写一个脚本,输出您想要的,然后通过ssh执行。在
  2. 使用ssh来隧道另一台机器上的端口,并与远程计算机上的服务器通信,该服务器将通过套接字响应您所需数据的信息请求。在

像@Floris一样,我相信最简单的方法就是设计命令,这样结果就很容易解析。然而,解析一个命令的结果并不少见,bash脚本中充满了grepsedwc或{}命令,这些命令正是这样做的。在

psutils本身也使用相同的方法,see how it reads ^{} for ^{}。您可以实现相同的解析,只读取远处的/proc/cpuinfo,或者计算ls -1 /sys/bus/cpu/devices/输出中的行数。在

实际上,获取信息的最佳方法是从/proc和{}中获取信息,它们是专门为简化从简单程序访问内部信息而设计的,只需要最少的解析。在

不幸的是,手动解析linux命令的输出是很常见的,但是你不应该这样做。这是一个非常常见的服务器管理任务,你不应该重新发明轮子。在

您可以使用sar之类的工具来记录远程统计信息并通过ssh检索报告。 http://www.ibm.com/developerworks/aix/library/au-unix-perfmonsar.html

你也应该看看盐。它允许您在多台机器上运行相同的命令并获得它们的输出。 http://www.saltstack.com/

以下是一些选择,但请记住保持干燥;)

相关问题 更多 >