The OpenNET Project / Index page

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

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

"Жив ли хост"  
Сообщение от Luna (ok) on 03-Фев-06, 19:19 
Ребята, помогите, чувствую себя полной дурой!

В локальной сети нужно из скрипта проверить - живой ли хост. Сеть не нагружена, одного icmp echo-request хватит.  Но вот с проверкой как-то у меня неуклюже получается.

сейчас делаю так:

#!/bin/sh
ping -n -q -c 1 -t 1 $host > /dev/null 2>&1
if [ $? -eq 0 ] ; then
   # Здесь все, если хост живой
else
   # А здесь если не живой
fi

Конечно, это работает. Но мне не нравится конструкция:
ping -n -q -c 1 -t 1 $host > /dev/null 2>&1
if [ $? -eq 0 ] ; then

Хочется что-то типа:

if [ ping ......... ] ; then .....

Не получается.  Точнее, что ни делаю - а либо ошибка, либо всегда false (хост не живой).


А хочется совсем красивости:

#!/bin/sh
is_alive() {
   return ping -n -q -c 1 -t 1 $1 > /dev/null 2>&1    # :)))
}

if [ is_alive $host ] ; then
...


FreeBSD 6.0-STABLE, если это важно.

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

 Оглавление

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


1. "Жив ли хост"  
Сообщение от Андрей (??) on 03-Фев-06, 21:20 
вот такой вариант не подойдёт ?

is_alive()
{
   ping -n -q -c 1 -t 1 $1 > /dev/null 2>&1
   [ $? = 0 ] && echo "alive" || echo ""
}

if [ `is_alive $host` ]
then
    echo "Alive"
else
    echo "Died"
fi

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

2. "Жив ли хост"  
Сообщение от Luna (??) on 03-Фев-06, 23:35 
>вот такой вариант не подойдёт ?

Нет.  Потому, что я - дуреха, а ты повелся :)  Уперлась я в это [ (оно же test), которое тут нафиг не нужно :)

#!/bin/sh
is_alive()
{
        ping -q -c 1 -t 1 -n $1 > /dev/null 2>&1
}

if is_alive $1 ; then
        echo good
else
        echo bad
fi

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

3. "Жив ли хост"  
Сообщение от chip email(ok) on 04-Фев-06, 12:55 
>>вот такой вариант не подойдёт ?
>
>Нет.  Потому, что я - дуреха, а ты повелся :)  

Забавная логика :)

>Уперлась я в это [ (оно же test), которое тут нафиг
>не нужно :)

Именно, можно еще проще:

#!/bin/sh
ping -q -c 1 -t 1 -n $1 > /dev/null 2>&1 && echo good || echo bad

Аналогично получается однострочник (домашнее задание :-D)

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

4. "Жив ли хост"  
Сообщение от BigShadow on 10-Мрт-06, 12:55 
>Хочется что-то типа:
>
>if [ ping ......... ] ; then .....
>
>Не получается.  Точнее, что ни делаю - а либо ошибка, либо
>всегда false (хост не живой).

Скобки квадратные уберите и все будет хоккей

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

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

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




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

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