0

我通过在多个服务器(比如 10 个)上运行脚本来安装应用程序,最后我需要获取在单个文件中运行的服务器列表。前任:

Server-1
Server-2
Server-3.....Server-10

我试过这个,但它在本地机器上创建 agent_name_list.txt,只有那个主机名。

知道如何在一个地方获得通过脚本安装代理的服务器的综合列表吗?

agent_name='hostname'
nslookup $agent_name | grep Name | awk '{print $2}' >  /var/tmp/$agent_name_list.txt 
4

1 回答 1

0

我不清楚您要实现的确切输出,但我看到您需要对代码进行 2 个修复:

agent_name=$(hostname)
nslookup $agent_name | grep Name | awk '{print $2}' >  /var/tmp/${agent_name}_list.txt 

这可以进一步减少到

agent_name=$(hostname)
nslookup $agent_name | awk '/Name/{print $2}' >  /var/tmp/${agent_name}_list.txt 

awk 的众多功能之一是匹配模式,并将其操作限制为仅匹配的行。


注释

agent_name='hostname'

在这里,您只是将 agent_name 的值设置为字符串值“主机名”。注意上面的方式,我使用 shell 命令替换功能来捕获命令的当前值hostname

nslookup $agent_name | grep Name | awk '{print $2}' >  /var/tmp/$agent_name_list.txt 

在这里,您需要使用变量“包装器” {},以便 shell 不会尝试将 $agent_name_list 评估为变量。因为您已为 agent_name 分配了一个值,所以 agent_name_list 没有值。假设一个前导 '$' 字符,{}包装器告诉外壳程序“这是一个变量名,值是什么?” ..

如果上面的更正示例不能完全解决您的问题,请考虑编辑您的消息以包含示例输入数据、给定示例数据所需的输出、您的当前代码和该当前代码的输出。

IHTH

于 2012-12-06T23:53:07.663 回答