Страница 1 из 2

shell + ping

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

Добавлено: 11 окт 2005, 13:34
mend0za
man ping на тему RETURN VALUE

и узнать что такое перенаправление в shell

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

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


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

Добавлено: 11 окт 2005, 14:10
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

Добавлено: 11 окт 2005, 14:14
Hermit
Agent007, а лучше посмотри в сторону nmap.

Добавлено: 11 окт 2005, 14:40
Agent007
спасибо.
а с его помощью можно получить имя компа, который пингуешь?

Добавлено: 11 окт 2005, 15:10
Hermit
Agent007, dns имена получить можно, например, так:
nmap 10.0.0.0/24 -sP -R

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

Добавлено: 11 окт 2005, 16:02
mend0za
гм

хотя может потому что смотрел мануал от соляриса

Добавлено: 11 окт 2005, 16:08
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]

Добавлено: 11 окт 2005, 21:57
Agent007
а как сделать разбиение строки.
например ввожу 192.168.0.1, а он мне берет точку за разделитель и разбрасывает все что она разделяет по разным переменным?

Добавлено: 11 окт 2005, 22:14
Llama
читай advanced bash scripting guide

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

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

Добавлено: 14 окт 2005, 13:46
Agent007
прошу Вас сильно не пинать, но в hellпе ничего не нашел :(

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

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

Добавлено: 14 окт 2005, 14:06
Llama
http://www.google.com/search?q=advanced ... 0%BE%D0%B4
Неужто такой сложный запрос?