2016-06-28 2 views
0

Я пытаюсь построить скрипт, который будет запускать команду, используя содержимое двух файлов, и добавить результаты этой команды в другой файл.Содержимое фида на скрипт Bash

Мои два файла:

  1. nameservers - содержит адреса моего DNS.
  2. hostnames - содержит имена хостов, которые необходимо разрешить против серверов имен.

Мне нужно передать содержимое nameservers и hostnames этой команды:

dig @[content of nameservers file] -t a [content of hostnames] 

Затем каждый запустить его извлечет значение времени запроса и добавить его в файл в следующем формате:

[nameserver1] [query time value] 

Как:

1.1.1.1 100 
2.2.2.2 120 
3.3.3.3 115 
+0

И ваш конкретный вопрос будет? (Я предполагаю, что это как это сделать?) –

+1

Вы читали BashFAQ # 1 (по адресу http://mywiki.wooledge.org/BashFAQ/001)? –

+0

Я думаю, вам нужно передать все имена хостов для каждого сервера имен, не так ли? – Samuel

ответ

0

вот путь:

#!/bin/bash 
hostnames=`cat hostnamesfile` 
cat nameserversfile | while read n; do 
    echo "$hostnames" | while read h; do 
    echo -n "$n " 
    dig @$n -t a $h | grep 'Query time' | grep -o '[0-9]\+' 
    done 
done > resultsfile 
+0

Это довольно ужасно. [Бесполезный 'cat'] (http://www.iki.fi/era/unix/award.html) должен быть легко исправлен, и' read -r' также легко изменить, но остальная часть должна действительно аналогично реорганизоваться. Подсказка: бесполезное использование 'grep'; возможно, прочитайте файл hosts в массив, если вы не хотите его читать несколько раз. – tripleee

+0

разумный момент, но на основе OP я хотел сделать ответ максимально понятным. – webb

Смежные вопросы