shell + ping

Все о программировании под *nix
Agent007
Заглянувший
Сообщения: 13
Зарегистрирован: 11 окт 2005, 13:04

shell + ping

Сообщение Agent007 »

Здравствуте.
я пишу скрипт, который сканирует введенные ip-адреса, а потом выводит активные.
у меня вопрос:
при использовании команды ping все выводится на экран, а как сделать так, чтобы при удачном пинге возвращало допустим 1, а неудачном - 0?

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Сообщение mend0za »

man ping на тему RETURN VALUE

и узнать что такое перенаправление в shell
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...

Agent007
Заглянувший
Сообщения: 13
Зарегистрирован: 11 окт 2005, 13:04

Сообщение Agent007 »

в мануале про пинг я не нашел RETURN VALUE :(, попробовал методом тыка.
выводит

-------- 127.0.0.1 ping statistics --------
etc


a=return ping -c 1 127.0.0.1
в переменную a ничего не сует

Hermit
Неотъемлемая часть форума
Сообщения: 354
Зарегистрирован: 22 сен 2004, 13:47
Откуда: Minsk
Контактная информация:

Сообщение Hermit »

Код: Выделить всё

#!/bin/sh
IP=10.0.0.1
ping $IP -c 1 > /dev/null
if [ $? -eq 0 ] 
  then
    echo Ping OK
  else
    echo Ping Failed
fi

Hermit
Неотъемлемая часть форума
Сообщения: 354
Зарегистрирован: 22 сен 2004, 13:47
Откуда: Minsk
Контактная информация:

Сообщение Hermit »

Agent007, а лучше посмотри в сторону nmap.

Agent007
Заглянувший
Сообщения: 13
Зарегистрирован: 11 окт 2005, 13:04

Сообщение Agent007 »

спасибо.
а с его помощью можно получить имя компа, который пингуешь?

Hermit
Неотъемлемая часть форума
Сообщения: 354
Зарегистрирован: 22 сен 2004, 13:47
Откуда: Minsk
Контактная информация:

Сообщение Hermit »

Agent007, dns имена получить можно, например, так:
nmap 10.0.0.0/24 -sP -R

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

man nmapб там все написано... могу даже сказать конкретную строчку, но боюсь вы тогда man не прочитаете, а там много интересного....
Ессно я пологаю вы имеет ввиду DNS-имя компьютера а не виндовое?
Если вам просто интересно получить список компов в сети, то smbclinet -L на мастербраузер и все... это будет _примерно_ правдой.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Сообщение mend0za »

гм

хотя может потому что смотрел мануал от соляриса
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

Код: Выделить всё

$ ping -V
ping utility, iputils-ss020927
~skip~
       If  ping does not receive any reply packets at all it will exit with code 1. If a packet count and
       deadline are both specified, and fewer than count packets are received by the  time  the  deadline
       has  arrived,  it  will  also exit with code 1.  On other error it exits with code 2. Otherwise it
       exits with code 0. This makes it possible to use the exit code to see if a host is alive or not.
[code]
Опыт растет прямо пропорционально выведенному из строя оборудованию

Agent007
Заглянувший
Сообщения: 13
Зарегистрирован: 11 окт 2005, 13:04

Сообщение Agent007 »

а как сделать разбиение строки.
например ввожу 192.168.0.1, а он мне берет точку за разделитель и разбрасывает все что она разделяет по разным переменным?

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

читай advanced bash scripting guide
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
Serj
Неотъемлемая часть форума
Сообщения: 320
Зарегистрирован: 26 июн 2004, 13:48
Откуда: Беларусь, Минск

Сообщение Serj »

Agent007 писал(а):а как сделать разбиение строки.
например ввожу 192.168.0.1, а он мне берет точку за разделитель и разбрасывает все что она разделяет по разным переменным?
можно cut'ом

Можно IFS (internal field separator вроде дословно) у bash'а заменить на .
и for'ом пройтись по полям ...
Наверное ещё туча вариантов есть
Программист - это человек, который сначала долго думает, чтобы потом ничего не делать.

Agent007
Заглянувший
Сообщения: 13
Зарегистрирован: 11 окт 2005, 13:04

Сообщение Agent007 »

прошу Вас сильно не пинать, но в hellпе ничего не нашел :(

где читать про advanced bash scripting guide и IFS (internal field separator ) ?

nmap так и не определил у меня адрес запрашиваемого комп-а.

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

http://www.google.com/search?q=advanced ... 0%BE%D0%B4
Неужто такой сложный запрос?
Опыт растет прямо пропорционально выведенному из строя оборудованию

Ответить