【问题标题】:Checking if domain is active on server检查域是否在服务器上处于活动状态
【发布时间】:2013-02-15 01:05:57
【问题描述】:

我正在尝试检查服务器上的域是否处于活动状态。到目前为止,我得到了错误。

list=/root/domainlist.txt
for i in $(cat $list)
do
  echo "checking " $i
  $ip = host $i |grep -o -m 100 '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
  if [[ $ip == "xx.xx.xx.xx" ]]; then
    $i >> /root/activedomains.txt
  fi
done

输出:

activedomains: line 4: =: command not found

这是我得到的当前错误。

【问题讨论】:

    标签: linux bash cpanel whm


    【解决方案1】:

    您的行有语法错误

    $ip = host $i |grep -o -m 100 '...'
    

    你应该改用:

    ip=$(host $i |grep -o -m 100 '...')
    

    使用布尔逻辑的更好方法(这里不需要grep,如果host $ip失败,它将返回FALSE):

    list=/root/domainlist.txt
    
    while read ip; do
        echo "checking $ip"
        host "$ip" &>/dev/null && echo "$ip" >> /root/activedomains.txt
    done < "$list"
    

    相当于

    list=/root/domainlist.txt
    
    while read ip; do
        echo "checking $ip"
        if host "$ip" &>/dev/null; then
            echo "$ip" >> /root/activedomains.txt
        fi
    done < "$list"
    

    【讨论】:

      【解决方案2】:

      对于初学者,您不应该将$ip 分配给ip ...但可能还有更多错误。

      我猜你会想要(第 4/5 行):

      ip=$(host $i |grep -o -m 100 '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')
      

      另请阅读 user000001 的答案。获取输出时缺少echo另一个问题。

      【讨论】:

        【解决方案3】:
        • = 前后没有空格
        • 作业中没有美元符号
        • 你可能想要命令的结果,所以把它放在$()

          ip=$(host $i |grep -o -m 100 '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')
          

        像这样写入文件

        echo "$i" >> /root/activedomains.txt
        

        【讨论】:

        • 没有看到丢失的echo。 +1
        猜你喜欢
        • 2021-07-23
        • 1970-01-01
        • 1970-01-01
        • 2020-04-11
        • 1970-01-01
        • 2020-01-11
        • 2019-12-10
        • 1970-01-01
        • 2022-01-01
        相关资源
        最近更新 更多