The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Скрипт добавления хостов в мониторинг Nagios"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Скрипт добавления хостов в мониторинг Nagios"  
Сообщение от spetrov email(ok) on 17-Апр-08, 21:21 
Здравствуйте, уважаемые!

Стоит следующая задача:
Есть 2 файла (сделанные из одного посредством awk, так что если удастся упростить решение - будет замечательно)
файл ~/ip вида:
х.х.х.х
у.у.у.у
z.z.z.z
.......
и соответствующий ему файл ~/hosts вида:
site1.ru
site2.ru
site3.ru
........
Естественно, x.x.x.x соответсвует site1.ru

Есть необходимость создать скрипт, который будет создавать файлы конфига с названием вида х.х.х.х.cfg, если ему скармливать ~/ip и ~/hosts.
На данный момент оно выглядит так:
#!/bin/sh
for ip in `cat /home/spetrov/tmp/ip`
do
  echo "define host{
                    use                     generic-printer
                    host_name               $host
                    alias                   $host
                    address                 $ip
                    hostgroups              network
                   }

       define service{
                    use                     generic-service
                    host_name               $host
                    service_description     PING
                    check_command           check_ping!3000.0,80%!5000.0,100%
                    normal_check_interval   10
                    retry_check_interval    1
                   }"
done

for host in `cat /home/spetrov/tmp/hosts`
do
  echo "define host{
                    use                     generic-printer
                    host_name               $host
                    alias                   $host
                    address                 $ip
                    hostgroups              network
                   }

       define service{
                    use                     generic-service
                    host_name               $host
                    service_description     PING
                    check_command           check_ping!3000.0,80%!5000.0,100%
                    normal_check_interval   10
                    retry_check_interval    1
                   }"

done
echo
#> /home/spetrov/tmp/1/$ip.cfg

Так как в bash-программировании я новичок, не совсем понимаю, как мне вывести результат в файл

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Скрипт добавления хостов в мониторинг Nagios"  
Сообщение от allez (ok) on 18-Апр-08, 06:24 
>Так как в bash-программировании я новичок, не совсем понимаю, как мне вывести
>результат в файл

Это делается с помощью перенаправления вывода.


echo "Foo"              # вывод строки "Foo" на экран
echo "Foo" > foo.txt    # вывод строки "Foo" в файл foo.txt
echo "Boo" > foo.txt    # вывод строки "Boo" в файл foo.txt, прежнее содержимое файла теряется
echo "Blah" >> foo.txt  # добавление строки "Blah" в конец файла foo.txt, прежнее содержимое сохраняется

В вашем случае можно также перенаправить вывод не внутри скрипта, а при его запуске:

./script.sh > file.cfg

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Скрипт добавления хостов в мониторинг Nagios"  
Сообщение от phpcoder email(??) on 18-Апр-08, 10:00 
Я бы сделал так:
- файл с адресами/хостами один, в формате "x.x.x.x yyyy.ru"
- файл-шаблон, в котором указаны специальные метки, которые позже будут заменены на адреса
- скрипт читает адрес/хост, заменяет эти данные в шаблоне и всё это сохраняет в файл.

Выглядит это примерно так:

[c0der@xxx ~]$ cat hosts.txt
х.х.х.х site1.ru
у.у.у.у site2.ru
z.z.z.z site3.ru
[c0der@xxx ~]$ cat generate_cfg.sh
#!/bin/sh

while read IP HOST; do
        echo "Generate config for site $HOST ($IP)..."
        sed "s|@IP@|$IP|;s|@HOST@|$HOST|" template.cfg >"$HOST.cfg"
done <hosts.txt

[c0der@xxx ~]$ cat template.cfg
define host {
        use                     generic-printer
        host_name       @HOST@
        alias           @HOST@
        address         @IP@
        hostgroups      network
}

define service {
        use                                             generic-service
        host_name                               @HOST@
        service_description             PING
        check_command                   check_ping!3000.0,80%!5000.0,100%
        normal_check_interval   10
        retry_check_interval    1
}

[c0der@xxx ~]$

Запускаем:

[c0der@xxx ~]$ ./generate_cfg.sh
Generate config for site site1.ru (х.х.х.х)...
Generate config for site site2.ru (у.у.у.у)...
Generate config for site site3.ru (z.z.z.z)...
[c0der@xxx ~]$ ls -l site*
-rw-r--r-- 1 coder coder 316 Апр 18 12:58 site1.ru.cfg
-rw-r--r-- 1 coder coder 316 Апр 18 12:58 site2.ru.cfg
-rw-r--r-- 1 coder coder 312 Апр 18 12:58 site3.ru.cfg
[c0der@xxx ~]$ cat site1.ru.cfg
define host {
        use                     generic-printer
        host_name       site1.ru
        alias           site1.ru
        address         х.х.х.х
        hostgroups      network
}

define service {
        use                                             generic-service
        host_name                               site1.ru
        service_description             PING
        check_command                   check_ping!3000.0,80%!5000.0,100%
        normal_check_interval   10
        retry_check_interval    1
}

[c0der@xxx ~]$

Если я правильно понял задачу, то это как раз, то что вам и требуется.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Скрипт добавления хостов в мониторинг Nagios"  
Сообщение от spetrov (ok) on 18-Апр-08, 16:26 
phpcoder, благодарю! Именно то, что нужно!

Попробовал еще кое-что таким же образом сделать. Вроде начал понимать. Спасибо.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру