Shell 如何将主机名附加到局域网中不同服务器的单个文本文件中

Shell 如何将主机名附加到局域网中不同服务器的单个文本文件中,shell,Shell,我通过在多个服务器上运行一个脚本(比如10台)来安装一个应用程序,最后我需要得到一个服务器列表,该脚本在一个文件中运行。 例: 我试过了,但它在本地框上创建了agent\u name\u list.txt,只使用了该主机名 您知道如何在一个地方获得由脚本安装的服务器的合并列表吗 agent_name='hostname' nslookup $agent_name | grep Name | awk '{print $2}' > /var/tmp/$agent_name_list.txt

我通过在多个服务器上运行一个脚本(比如10台)来安装一个应用程序,最后我需要得到一个服务器列表,该脚本在一个文件中运行。 例:

我试过了,但它在本地框上创建了agent\u name\u list.txt,只使用了该主机名

您知道如何在一个地方获得由脚本安装的服务器的合并列表吗

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

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

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的值设置为字符串值“hostname” 请注意,在上面,我使用shell命令替换特性来捕获
hostname
命令的当前值

nslookup $agent_name | grep Name | awk '{print $2}' >  /var/tmp/$agent_name_list.txt 
在这里,您需要使用变量“wrappers”
{}
,这样shell就不会试图将$agent\u name\u list作为变量计算。因为您已经为代理名称分配了一个值,所以代理名称列表中没有值。通过使用前导“$”字符,
{}
包装器告诉shell“这是一个变量名,值是多少?”

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


IHTH

将代码放在{code sample}
nslookup $agent_name | grep Name | awk '{print $2}' >  /var/tmp/$agent_name_list.txt