我正在编写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/tmppds文本文件包含:
us3par1 192.168.3.20
us3par2 192.168.3.21
us3par3 192.168.3.22我想要的输出应该是:如果找到主机
顺便说一句,我只是一个脚本初学者,所以我非常感谢任何帮助,评论和建议。:)
发布于 2018-07-10 08:39:26
如果我正确理解了您的问题,那么下面的调整应该可以解决您的问题:
#!/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 (如果可以找到输入的主机名)。这也可能有帮助:
https://stackoverflow.com/questions/51259234
复制相似问题