LINUX.ORG.RU
ФорумAdmin

Скриптик надо ... помогите!! Срочно!!


0

0

Понадобился скриптик ... а как его писать не знаю! Помогите PLZ ... очень надо ... горю просто! Суть скрипты такова: Если не проходит ping на адрес 192.168.0.1 то надо что-б тачка под Linux Red Hat пищала динамиком! Т.Е. надо издовать писк линамиком до тех пор пока ping сного не заработает! Как его такой написать ... Надо что-б это был bash скрипт! Т.Е. я б его на постоянное выполнение поставил, и пусть себе крутиться!!! Помогите написать ... ! Очень надо .... Ну просто очень ...

anonymous

Ну могу вот предложить на перле - только что сам недавно написал/ ТОлько он на мыло или через snpp сообщения генерит/ Паставишь вместо этого печать, например, \а (по моему он) - будет пищать )))
my(%hosts)=("192.168.1.2"    =>      "snpp 192.168.10.1:444/123",
            "192.168.3.2"    =>      "mail none\@domain.ru/123");
my(%ping,%skips,%mess,%srvnames);
my($snd,$rc);my($p)=Net::Ping->new('icmp');
my($skip)=(3);
#my($bflag)=1;
foreach $snd (keys %hosts)
{
    $ping{$snd}=1;
    $skips{$snd}=0;
    $mess{$snd}=0;
    $srvnames{$snd}=gethostbyaddr(inet_aton($snd),AF_INET)->name;
}

while(1)
{
    foreach $snd (keys %hosts)
    {
        $rc=$p->ping($snd);
        #print("Ping $snd");
        if(not defined $rc or $rc==0)
        {
            $skips{$snd}=0 if $ping{$snd}==1;
            $skips{$snd}++;
            $ping{$snd}=0;
            MessSend($snppsend,$hosts{$snd},"WARNING: Host $snd ($srvnames{$snd}) NOT avalable."),$mess{$snd}=1 if $skips{$snd}==$skip and $mess{$snd}==0;
 }
        else
        {
            #print("\tOK\n");
            $ping{$snd}=1,$skips{$snd}=0,next if $mess{$snd}==0;
            $skips{$snd}=0 if $ping{$snd}==0;
            $skips{$snd}++;
            $ping{$snd}=1;
            MessSend($snppsend,$hosts{$snd},"Host $snd ($srvnames{$snd}) now AVALABLE."),$mess{$snd}=0 if $skips{$snd}==$skip and $mess{$snd}==1;
        }
    }
    sleep 60;
}
exit 0;

sub MessSend
{
    my($snpp,$abon,$mess)=@_;
    my(@abonents,$n,$server,$port);
    if($abon =~ /^snpp /)
    {
        $abon=~s/^snpp //;
        (@abonents)=split(' ',$abon);
        foreach $n (@abonents)
        {
            ($server,$port,$abon)=($n =~ /^(.+):(\d+)\/(\d+)$/);
            `$snpp -s $server -p $port -n $abon -m "$mess"`;
        }
 return 0;
    }
    if($abon =~ /^mail /)
    {
        $abon=~s/^mail //;
        (@abonents)=split(' ',$abon);
        foreach $n (@abonents)
        {
            ($snpp,$abon)=($n =~ /^(.+)\/(\d+)$/);
            $mess='1\n'.$mess;
            `echo -e "$mess" | mail -s "$abon" $snpp`;
        }
        return 0;
    }
}

Graveholder
()

Sorry, вот это надо в самое начало поставить:
#!/usr/bin/perl -w

require 5.002;
use strict;
use Net::Ping;
use Net::hostent;
use Socket;

Graveholder
()

А под BASH есть? Ставить PERL ради этого ... ну как-бы вас сказать ... незачем! Мнеб под bash найти!!!

anonymous
()

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

#!/bin/bash
while sleep 1
do
ping -c 1 -q your_host_here > /dev/null
[ $? -ne 0 ] && echo -e \\007
done

sasha999 ★★★★
()

Болван

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.