首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于在存储数组上搜索主机的shell脚本

用于在存储数组上搜索主机的shell脚本
EN

Stack Overflow用户
提问于 2018-07-10 07:14:59
回答 1查看 190关注 0票数 0

我正在编写shell脚本,该脚本在所有存储数组(3par)中搜索主机的名称。我的脚本(1)连接到所有设备(2)运行一个命令来解析主机名,(3)将其输出重定向到一个文件。

我的问题是:

  1. 我不知道如何在屏幕上输出主机名
  2. 我不能让脚本告诉我,主机在哪台机器上运行。

这是我不完整但不太好的剧本。:)

代码语言:javascript
复制
#!/bin/bash
green=`tput setaf 2`
nc=`tput sgr0`
>/home/3par/tmp

read -p "Enter the host: " hostname

for ip in `cat /home/3par/pds |awk '{print $2}'`
do
ssh usadmin@$ip -i ~/.ssh/us3par_rsa 'showhost -d' >/home/3par/out
echo "$ip `cat /home/3par/out`" >>/home/3par/tmp

pds文本文件包含:

代码语言:javascript
复制
us3par1 192.168.3.20
us3par2 192.168.3.21
us3par3 192.168.3.22

我想要的输出应该是:如果找到主机

顺便说一句,我只是一个脚本初学者,所以我非常感谢任何帮助,评论和建议。:)

EN

回答 1

Stack Overflow用户

发布于 2018-07-10 08:39:26

如果我正确理解了您的问题,那么下面的调整应该可以解决您的问题:

代码语言:javascript
复制
#!/bin/bash
read -p "Enter the host: " hostname
while IFS=' ' read -r -a ip
do
  foundhost="$(ssh usadmin@${ip[1]} -i ~/.ssh/us3par_rsa hostname 2> /dev/null)"
  if [ "$hostname" = "$foundhost" ]
  then
    echo "This host $hostname is on ${ip[0]}" | tee -a /home/3par/out
  fi
done < pds
  • 假设: pds是一个(多行)文本文件,包含两列,由空格字符分隔。
  • 您想要的输出“这个主机us4c11j8a4在us3par2上”将被重定向到/home/3par/out (如果可以找到输入的主机名)。

这也可能有帮助:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51259234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档