Скрипт, който да пингва сървъри

vinsbg

Registered
Здравейте,

Знам, че има и линукс гурута тук :D, та ще ми трябва малко помощ.

Трябва да направя един скрипт, който на всеки 30мин да пингва сървър/и(gatawey) и ако е жив да получавам отговор, че е .. а ако не е жив съответно нищо няма да се получава.
Сървърите, които ще се проверяват са 7 на брой. Реално трябва да сървър 1 да пингне останалите 7 сървъра и да види дали са живи.
Скрипта ще е на bash
Моля, някой да помогне :?:
 
Код:
#!/bin/bash

servers=( "192.168.1.8" "192.168.1.5" "192.168.2.1" )

for srv in "${servers[@]}"
do
  ping -c 1 $srv > /dev/null && echo $srv "raboti" || echo $srv "ne raboti"
done

Изход:

Код:
alex@debian:~$ ./testping
192.168.1.8 raboti
192.168.1.5 raboti
192.168.2.1 ne raboti

Съответно действието ти зависи от върнатия код от ping и на мястото на echo-тата можеш да сложиш каквото ти трябва. Можеш да свалиш таймаута на пинг или да вдигнеш броя изпратени пакети ако мрежата е калпава.

Казал си bash - скрипта няма да работи под dash! (към което /bin/sh е symlink при дебиан и подобни)

30-те минути можеш да ги направиш през cron :)
 
edit//
В крайна сметка това е решението, което на локалната VM работи. Утре ще го пробвам на сървъра.
Код:
#!/bin/bash

servers=( "1.1.1.1" "2.2.2.2" "3.3.3.3" "4.4.4.4" "5.5.5.5" "6.6.6.6" "7.7.7.7" )

for i in "${servers[@]}"; do
    ping -c 1 $i > /dev/null && /usr/bin/snmptrap -v 2c -c public ...	
done
Много ти благодаря!
 

Горе