Bash 用于在存储阵列上搜索主机的shell脚本
我正在编写shell脚本,它在所有存储阵列(3par)中搜索主机名。我的脚本(1)连接到所有设备(2)运行命令解析主机名(3)将其输出重定向到文件 我的问题是:Bash 用于在存储阵列上搜索主机的shell脚本,bash,ssh,Bash,Ssh,我正在编写shell脚本,它在所有存储阵列(3par)中搜索主机名。我的脚本(1)连接到所有设备(2)运行命令解析主机名(3)将其输出重定向到文件 我的问题是: 我不知道如何在屏幕上输出主机名和 我不能让脚本告诉我,主机在哪台机器上运行 这是我不完整且不太好的剧本。:) pds文本文件包含: us3par1 192.168.3.20 us3par2 192.168.3.21 us3par3 192.168.3.22 我想要的输出应该是: 顺便说一句,我只是一个脚本初学者,所以我非常感谢任何帮
us3par1 192.168.3.20
us3par2 192.168.3.21
us3par3 192.168.3.22
我想要的输出应该是:
顺便说一句,我只是一个脚本初学者,所以我非常感谢任何帮助、评论和建议。:) 如果我正确理解您的问题,那么以下调整应该可以解决您的问题:
#!/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
#/bin/bash
读取-p“输入主机:”主机名
而IFS=''read-r-a ip
做
foundhost=“$(ssh-usadmin@${ip[1]}-i~/.ssh/us3par\u rsa hostname 2>/dev/null)”
如果[“$hostname”=“$foundhost”]
然后
echo“此主机$hostname位于${ip[0]}”tee-a/home/3par/out
fi
完成
- 假设:pds是一个(多行)文本文件,有两列,由空白字符分隔
- 您想要的输出“此主机us4c11j8a4位于us3par2上”将重定向到
(以防找到输入的主机名)/home/3par/out
showhost-d
是否重要?hostname
(在此场景中检索远程主机的主机名)不是选项吗?第二:如果主机名与输入的主机名匹配,那么输出应该是(1)写入文件和(2)打印在屏幕上。显式调用showhost-d是否重要?是,因为没有其他命令可以列出阵列上所有连接的主机。主机名(在此场景中检索远程主机的主机名)不是选项吗?不是,这是一种选择。远程主机不是一个unix机箱,而是一个3par存储阵列,它有自己的第二个可用命令:如果主机名与输入的主机名匹配,则输出应同时(1)写入文件和(2)打印在屏幕上?实际上不需要将其写入文件,但重要的是一旦找到,就在屏幕上打印它。
#!/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