是否有一个名为“on”的命令可以在远程计算机上执行命令?

是否有一个名为“on”的命令可以在远程计算机上执行命令?

我遇到过一个 bash 脚本,它可以查找远程计算机上的内存、CPU 使用情况等。为此,它使用了如下技术:

i=RemoteServerName

TOTALMEM=`on $i cat /proc/meminfo | grep MemTotal | awk -F ' ' '{print $2}' `

我在互联网上搜索过,看起来所有人都使用 ssh username@RemoteServerName 来实现这一点。我不明白这个“开启”是如何运作的。该脚本工作正常,但是当我在脚本之外执行命令时,它显示: -bash: on: command not find..

我在手册页中进行了搜索,但没有找到任何结果。另外,我还使用命令“type on”搜索了“on”代表的任何别名。但什么也没找到。请帮助我理解这个“on”如何在远程计算机上执行命令。我不认为有一个名为“on”的命令。请帮忙。

本地和远程机器都是Redhat 6.2

答案1

我找到了。我最初所做的就是在我的(root 的)环境中到处搜索名为“on”的别名。但后来我检查了这个脚本在服务器中的使用方式。它用于生成许多其他远程服务器的每小时资源利用率。所以它应该是 crontab 的一部分。是的,我们得到了!该脚本是另一个用户(非 root)的用户特定 crontab 的一部分。

脚本中有这样几行:

PATH=$PATH:$HOME/bin
export PATH

该用户的 ~/bin 具有可执行文件“on”,其中包含转换on $issh servername.

如果您想知道为什么要执行此额外步骤而不是直接使用ssh servername,请参阅以下解释。我上面显示的代码格式只是一种格式,在实际脚本中,它用于生成许多服务器(分为几组)的报告,如下所示:

for i in $GROUP1 $GROUP2 $GROUP3
do 
   TOTALMEM=`on $i cat /proc/meminfo | grep MemTotal | awk -F ' ' '{print $2}' `
   #other report generation and formatting code here
done

GROUP1、GROUP2 等是包含类似服务器的主机名的列表。

ssh username@servername属于一个组的服务器具有用于登录的通用凭据。文件“on”包含使用 case 语句根据其组形成命令所需的所有代码。

相关内容