2017-02-13 4 views
0

Привет, я работаю над сценарием оболочки, чтобы принимать входные данные из файла и использовать цикл for для запуска команды хоста на каждом IP-адресе, и, если он работает, он выводит результат которые показывают имя домена, но если IP не найден, он должен печатать UNKNOWN. Это то, что у меня есть до сих пор.Список доменных имен с использованием команды хозяина в сценарии bash

Список_адресов файл выглядит следующим образом:

72.247.244.88 
173.231.140.219 
65.55.72.135 
97.107.137.164 
69.171.224.11 
199.59.149.230 
174.121.194.34 

Мой текущий код:

#! /bin/bash 
for ips in /opt/book/list/results/hostlist 

do 
    hostnames=$(host $ips) 
    if [[$hostnames == *"NXDOMAIN"*]] 
     then echo "UNKNOWN" 
    else echo $hostnames 
    fi 
done 

То, что я хочу, чтобы результаты выглядеть следующим образом:

230.149.59.xxx.in-addr.arpa domain name pointer www4.twitter.com. 
230.149.59.xxx.in-addr.arpa domain name pointer www4.example.com. 
UKNOWN 
UNKOWN 
230.149.59.xxx.in-addr.arpa domain name pointer www4.dummy.com. 

Любая помощь приветствуется.

ответ

1

Вы можете сделать это с чем-то вроде этого

#! /bin/bash 

while read ip; do 
    hostname=`host $ip` 
    if [ $? -eq 0 ]; then 
    echo $hostname 
    else 
    echo "UNKNOWN" 
    fi 
done < /opt/book/list/results/hostlist 
0

Я думаю, вы ищете что-то вроде этого:

#!/bin/bash 
for ips in `cat /opt/book/list/results/hostlist` 
do 
    hostname=$(eval host ${ips}) 

    if [[ "${hostname}" =~ "NXDOMAIN" ]] 
     then 
      echo "UNKNOWN" 
     else 
      echo ${hostname} 
    fi 
done 

перебирать содержимое файла вы должны прочитать его в некоторых путь, поэтому cat /opt/book/list/results/hostlist по определению.

Кроме того, вам также необходимо сравнить равные вещи с вашим, если поместить имя хоста var внутри двойных кавычек, чтобы bash понимал, что переменная и текст «NXDOMAIN» одинаковы.

Последнее, что нужно проверить, существует ли строка в переменной, вы можете использовать функцию =~, она проверяет, существует ли правильный параметр слева.

Надеюсь, это поможет.