解析域脚本

解析域脚本

如何让它发挥作用?


脚本1:(这不起作用)

host=www.example.com
ip=$(getent hosts | grep $host | awk '{ print $1}')
echo $ip

脚本2:(这不起作用)

host=www.example.com
ip=$(getent hosts $host | awk '{ print $1}') 
echo $ip

脚本3:(它有效,但我需要使用变量......)

ip=$(getent hosts www.example.com | awk '{ print $1}') 
echo $ip

我需要根据变量获取适当的主机文件 IP。


主办方:(等/主机)

 127.0.0.1  localhost
 1.1.1.1  www.example.com

答案1

  1. 你所拥有的应该可以工作,没有理由不可以。它当然可以在我的系统上运行。

  2. 你不需要grep.以下将起作用:

ip=$(getent hosts "$host" | awk '{ print $1}')

答案2

您混淆了可以使用 获得的两个不同的结果集getent hosts

  1. getent hosts将返回大致相当于的结果cat /etc/hosts
  2. getent hosts TARGET将使用hosts中的条目/etc/nsswitch.conf来查找 的一个或多个主机数据库TARGET,返回它找到的第一个匹配项

host脚本 1 将仅从查找/etc/hosts。也可以稍微缩短:

host=www.example.com
ip=$(getent hosts | awk '/'"$host"'/ {print $1; exit}')
echo $ip

脚本 2 和 3 将搜索/etc/hosts,也可能搜索 DNS。我不清楚你把它放在哪里',或者"你的第三个脚本无法工作。

相关内容