分享
三行代码  ›  专栏  ›  技术社区  ›  kulfi

使用nslookup检查dns记录中的主机名

  •  0
  • kulfi  · 技术社区  · 6 天前

    我有一份接待名单 hostfile nslookup

    下面是我正在做的和它的工作,但是有一种情况下 result 在这种情况下没有什么我想填写“没有dns记录”

    $ for i in `cat hostfile`;
    > do
    > echo $i $result
    > result=$(nslookup $i | awk 'FNR==6{print $2}')
    > done
    

    for i in `cat hostfile`; 
    do 
    printf "$i: %s\\n" $(nslookup $i | awk 'FNR==6{print $2}'); 
    done
    

    如果没有,它就不能给出正确的输出 nslookup公司 建立

    渴望的:

    myhosts01       192.168.1.1
    myhosts02       192.168.1.2
    myhosts03       192.168.1.3
    myhosts04       192.168.1.4
    myhosts03       no dns record
    myhosts04       no dns record
    
    1 回复  |  直到 6 天前
        1
  •  1
  •   Gordon Davisson    6 天前

    你可以用一个完整的 if 语句来检查 result -z

    if [[ -z "$result" ]]; then
        result="no dns record"
    fi
    echo "$i $result"
    

    或者使用 default value 展开变量时:

    echo "$i ${result:-no dns record}"
    

    无论哪种情况,我都建议使用 while read for (假设每行有一个主机名),使用 dig +short 而不是试图解析 nslookup 打印结果,并双引号引用所有变量引用(可能使用更具描述性的变量名)。像这样:

    while read -r hostname; do
        hostIP=$(dig +short "$hostname")
        echo "$hostname ${hostIP:-no dns record}"
    done <hostfile