Shell脚本以搜索存储阵列上的主机

时间:2018-07-10 07:15:00

标签: bash ssh

我正在使用Shell脚本,该脚本在我们所有的存储阵列(3par)中搜索主机的名称。我的脚本(1)连接到所有设备(2)运行命令以解析主机名,并且(3)将其输出重定向到文件。

我的问题是:

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

这是我不完整且不太好的脚本。 :)

#!/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文本文件包含:

us3par1 192.168.3.20
us3par2 192.168.3.21
us3par3 192.168.3.22

我想要的输出应该是: If host is found

顺便说一句,我只是脚本编写的初学者,因此,我非常感谢您提供的任何帮助,评论和建议。 :)

1 个答案:

答案 0 :(得分:0)

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

#!/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(如果可以找到输入的主机名)。

这也可能会有所帮助: