检查主机名是否完全合格(FQDN)

时间:2017-06-05 11:48:42

标签: bash fqdn

#!/bin/bash

for h in "bert" "ernie" "www.google.com"
do
    host $h 2>&1 > /dev/null
    if [ $? -eq 0 ]
    then
        echo "$h is a FQDN"
    else
        echo "$h is not a FQDN"
    fi
done

喜欢插入'hostname -f'的输出而不是'bert'或www.google.com 如果主机名是FQDN,则脚本应该继续,否则应该出现错误消息。 PS。如果TLD存在与否则并不重要。例如。 hostname.domain是FQDN或hostname.domain.tld是FQDN。如果TLD在互联网上有效对我来说并不重要。 output of hostname -f

2 个答案:

答案 0 :(得分:2)

确保主机名完全合格的常用方法是指定最终.(通常省略):example.com.

但是,从评论到问题,似乎您需要一个简单的字符串比较 - 如果.出现在任何地方,则假定名称有效,否则出错。最简单的方法是将名称与已移除的第一个.的副本进行比较 - 如果两者相同,则无法移除.

if [ "$h" != "${h/.}" ]
then echo "$h is acceptable" >&2
else echo "$h is not acceptable" >&2
fi

答案 1 :(得分:0)

for h in "bert" "ernie" "www.google.com"
do
    if [[ ${h//[^.]} != "" ]]
    then
        echo "$h contains ."
    else
        echo "$h doesn't contain ."
    fi
done

如果它支持regexp

if [[ $h =~ \. ]]; then