Автор Тема: Помогите со скриптом на BASH  (Прочитано 932 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Дмитрий

  • Участник форума
  • Сообщений: 18
  • Репутация: 0
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • MS Internet Explorer 9.0 MS Internet Explorer 9.0
    • Просмотр профиля
Помогите со скриптом на BASH
« : Октябрь 13, 2011, 01:31:48 pm »
Доброго времени суток уважаемые! Нужна Ваша помощь в написании скрипта на BASHе, исходник ниже, а вот что нужно:
- Сервер1 (Fedora 14) пингует Сервер2 (Windows 2008 r2) каждые 3 минуты, при обрыве связи заводится log-файл и пинг должен идти непрерывно до появления связи, если связь не появилась в течении 5 минут происходит выключение Сервера1   
Вот сам скрипт:

#! /bin/sh
if ping -c1 192.168.1.2
then echo "OK"
else /sbin/shutdown NOW
fi

« Последнее редактирование: Октябрь 24, 2011, 01:08:20 pm от Дмитрий »

Pascal

  • Администратор
  • Сообщений: 8558
  • Репутация: 38.45
  • OS:
  • Linux (Gentoo) Linux (Gentoo)
  • Browser:
  • Chrome 15.0.874.83 Chrome 15.0.874.83
    • Просмотр профиля
    • Форум системных администраторов UNIX
Помогите со скриптом на BASH
« Ответ #1 : Октябрь 13, 2011, 02:09:26 pm »
Что должно заноситься в лог файл?
cout << "Shalom World!\n"; // (с)

Дмитрий

  • Участник форума
  • Сообщений: 18
  • Репутация: 0
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • MS Internet Explorer 9.0 MS Internet Explorer 9.0
    • Просмотр профиля
Помогите со скриптом на BASH
« Ответ #2 : Октябрь 13, 2011, 02:11:51 pm »
Время разрыва и время востановления, время выключения

Pascal

  • Администратор
  • Сообщений: 8558
  • Репутация: 38.45
  • OS:
  • Linux (Gentoo) Linux (Gentoo)
  • Browser:
  • Chrome 15.0.874.83 Chrome 15.0.874.83
    • Просмотр профиля
    • Форум системных администраторов UNIX
Помогите со скриптом на BASH
« Ответ #3 : Октябрь 13, 2011, 02:13:45 pm »
Дмитрий, Ок, как освобожусь напишу.
cout << "Shalom World!\n"; // (с)

Дмитрий

  • Участник форума
  • Сообщений: 18
  • Репутация: 0
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • MS Internet Explorer 9.0 MS Internet Explorer 9.0
    • Просмотр профиля
Помогите со скриптом на BASH
« Ответ #4 : Октябрь 13, 2011, 02:14:48 pm »
Буду ждать!

Pascal

  • Администратор
  • Сообщений: 8558
  • Репутация: 38.45
  • OS:
  • Linux (Gentoo) Linux (Gentoo)
  • Browser:
  • Chrome 15.0.874.83 Chrome 15.0.874.83
    • Просмотр профиля
    • Форум системных администраторов UNIX
Помогите со скриптом на BASH
« Ответ #5 : Октябрь 13, 2011, 02:44:46 pm »
начал писать ... скоро допилю, сейчас отвлекли
вот пока что есть:

#!/bin/sh
addr=127.0.0.1
while true;
do
{
    ck=$(/bin/ping -c 1 $addr | grep from)
    if [ -n "$ck" ];
    then
        sleep 5
    else
        echo "connection lost at $(date), enable endless ping"
        ck=$(/bin/ping $addr | grep from)


    fi
}
done

мож кто подхватит.
cout << "Shalom World!\n"; // (с)

Дмитрий

  • Участник форума
  • Сообщений: 18
  • Репутация: 0
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • MS Internet Explorer 9.0 MS Internet Explorer 9.0
    • Просмотр профиля
Помогите со скриптом на BASH
« Ответ #6 : Октябрь 13, 2011, 02:48:39 pm »
Попробую разобраться...Спасибо

Pascal

  • Администратор
  • Сообщений: 8558
  • Репутация: 38.45
  • OS:
  • Linux (Gentoo) Linux (Gentoo)
  • Browser:
  • Chrome 15.0.874.83 Chrome 15.0.874.83
    • Просмотр профиля
    • Форум системных администраторов UNIX
Помогите со скриптом на BASH
« Ответ #7 : Октябрь 13, 2011, 02:55:26 pm »
Дмитрий, дальше сложнее, надо таймер втыкать, подожди до вечера. работа.
cout << "Shalom World!\n"; // (с)

Дмитрий

  • Участник форума
  • Сообщений: 18
  • Репутация: 0
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • MS Internet Explorer 9.0 MS Internet Explorer 9.0
    • Просмотр профиля
Помогите со скриптом на BASH
« Ответ #8 : Октябрь 13, 2011, 02:55:50 pm »
Конечно подожду!

FessAectan

  • Супермодератор
  • Сообщений: 6303
  • Репутация: 39.2099
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 16.0.899.0 Chrome 16.0.899.0
    • Просмотр профиля
Помогите со скриптом на BASH
« Ответ #9 : Октябрь 13, 2011, 04:10:50 pm »
А вот такой вариант приемлем:
Сервер1 пингует Сервер2 каждые три минуты, и при очередном запуске скрипта видим что пинга нет, ставим отметку в файл флаг и пишем в лог время когда произошел разрыв, во время следующего запуска скрипт проверяет файл флаг на предмет отметки, она есть - скрипт выключает сервер
?
Я не всегда понимаю, о чем говорю, но всегда уверен, что я прав.
– Мухаммед Али

FessAectan

  • Супермодератор
  • Сообщений: 6303
  • Репутация: 39.2099
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 16.0.899.0 Chrome 16.0.899.0
    • Просмотр профиля
Помогите со скриптом на BASH
« Ответ #10 : Октябрь 13, 2011, 04:31:26 pm »
если предложеный мною алгоритм устраивает, то вот скрипт

#!/bin/bash

var=`/bin/cat /tmp/file_flag `

if [ "$var" == "1" ]; then
/bin/cat /dev/null > /tmp/file_flag
echo "server now shutdown"
    else
ping -c 2 ya.ru

if [ $? -ne 0 ]; then
        echo "connection lost at $(date)" >> /tmp/tmp.log
echo 1 > /tmp/file_flag
else
/bin/cat /dev/null > /tmp/file_flag
fi
fi

Тестировал я так:
запускаем скрипт, видим что он прекрасно пингует ya.ru, вбиваем в hosts заведомо недостижимый для нас ip для ya.ru, снова запускаем скрипт, он пишет что сервер сейчас вурубит, коментим в hosts строку про ya.ru, снова запускаем скрипт и он просто продолжает пинговать ya.ru.
Под себя уже допинаете сами думаю.
Я не всегда понимаю, о чем говорю, но всегда уверен, что я прав.
– Мухаммед Али

Дмитрий

  • Участник форума
  • Сообщений: 18
  • Репутация: 0
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • MS Internet Explorer 9.0 MS Internet Explorer 9.0
    • Просмотр профиля
Помогите со скриптом на BASH
« Ответ #11 : Октябрь 13, 2011, 04:32:47 pm »
Думаю что нет, т.к. надо чтобы все время, допустим 3 мин в течении которого связи нет, сервер 1 пинговал сервер 2. Возможно что сервер 2 просто перезагрузили.

FessAectan

  • Супермодератор
  • Сообщений: 6303
  • Репутация: 39.2099
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 16.0.899.0 Chrome 16.0.899.0
    • Просмотр профиля
Помогите со скриптом на BASH
« Ответ #12 : Октябрь 13, 2011, 04:41:24 pm »
нет, мой скрипт не подойдет...
Я не всегда понимаю, о чем говорю, но всегда уверен, что я прав.
– Мухаммед Али

Pascal

  • Администратор
  • Сообщений: 8558
  • Репутация: 38.45
  • OS:
  • Linux (Gentoo) Linux (Gentoo)
  • Browser:
  • Chrome 15.0.874.83 Chrome 15.0.874.83
    • Просмотр профиля
    • Форум системных администраторов UNIX
Помогите со скриптом на BASH
« Ответ #13 : Октябрь 13, 2011, 05:42:17 pm »
Алгоритм я придумал ... ждите
cout << "Shalom World!\n"; // (с)

Pascal

  • Администратор
  • Сообщений: 8558
  • Репутация: 38.45
  • OS:
  • Linux (Gentoo) Linux (Gentoo)
  • Browser:
  • Chrome 15.0.874.83 Chrome 15.0.874.83
    • Просмотр профиля
    • Форум системных администраторов UNIX
Помогите со скриптом на BASH
« Ответ #14 : Октябрь 13, 2011, 06:16:06 pm »
Пока черновой вариант =)

#!/bin/sh
echo -n "0" > /tmp/ololo
count=0
addr=127.0.0.1
while [ "$(cat /tmp/ololo)" -ne "20" ];
do
{
    ck=$(/bin/ping -c 1 $addr | grep from)
    if [ -n "$ck" ];
    then
        sleep 5
    else
        echo "connection lost at $(date), enable endless ping"
        while [ "$(cat /tmp/ololo)" -ne "20" ];
        do
        {
            ck=$(/bin/ping -c 1 $addr | grep from)
            if [ -z "$ck" ];
            then
                let count=$count+10
                echo $count > /tmp/ololo
            else
                echo -n "0" > /tmp/ololo
                sleep 1
            fi
        }
        done
    fi
}
done
echo "shut !!!1"
cout << "Shalom World!\n"; // (с)