我正在使用Shell脚本,该脚本在我们所有的存储阵列(3par)中搜索主机的名称。我的脚本(1)连接到所有设备(2)运行命令以解析主机名,并且(3)将其输出重定向到文件。
我的问题是:
这是我不完整且不太好的脚本。 :)
#!/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
顺便说一句,我只是脚本编写的初学者,因此,我非常感谢您提供的任何帮助,评论和建议。 :)
答案 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
/home/3par/out
(如果可以找到输入的主机名)。这也可能会有所帮助: