我希望能够收集服务器上cpu数量的值以及存储空间等,并将它们分配给python脚本中的局部变量。我已经设置了paramiko,所以我可以通过SSH连接到远程Linux节点并在它们上运行任意命令,然后将输出返回到脚本。然而,许多命令都非常冗长,“比如df-h”,而我只想分配一个整数或值。在
对于cpu数量的情况,有Python功能,比如通过psutil模块来获得这个值。例如'psutil.NUM_CPU'返回一个整数。然而,虽然我可以在本地运行这个,但是我不能在远程节点上执行它,因为它们没有配置python环境。在
我想知道手动解析linux命令的输出(比如df-h等)然后从中获取一个整数(类似于bash有一个“cut”函数)是多么常见。或者在每个远程服务器上设置一个环境是否更好(或者更好的方法)。在
如果您可以将自己的程序或脚本放在远程计算机上,您可以做以下几件事:
像@Floris一样,我相信最简单的方法就是设计命令,这样结果就很容易解析。然而,解析一个命令的结果并不少见,bash脚本中充满了}命令,这些命令正是这样做的。在
grep
、sed
、wc
或{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/
以下是一些选择,但请记住保持干燥;)
相关问题 更多 >
编程相关推荐