Ben kontrol için günlük ping zorunda 10 IP numaraları var, BASH komut dosyası kullanarak bunu nasıl yapabilirim. Böylece bu görevi cron kullanarak otomatikleştirebilirim. Sadece BASH betiği istiyorum.
Teşekkür ederim.
Ben kontrol için günlük ping zorunda 10 IP numaraları var, BASH komut dosyası kullanarak bunu nasıl yapabilirim. Böylece bu görevi cron kullanarak otomatikleştirebilirim. Sadece BASH betiği istiyorum.
Teşekkür ederim.
Yanıtlar:
IP aralığınızın simetrisi olmadığı ve sadece 10 düğüm olduğu için bunları bir metin dosyasında listelemenizi öneririz. Listeyi içeren dosyayı list.txt
aşağıda gösterildiği gibi her satırda ip bir listesini içeren dosya olduğunu düşünüyorum ,
10.12.13.14
172.15.48.3
192.168.45.54
...
48.114.78.227
Bu komut dosyasını kullanabilirsiniz,
#!/bin/bash
# Program name: pingall.sh
date
cat /path/to/list.txt | while read output
do
ping -c 1 "$output" > /dev/null
if [ $? -eq 0 ]; then
echo "node $output is up"
else
echo "node $output is down"
fi
done
Düğümlerinizin çalışma durumunu crontab'da 30 dakika aralıklarla güncellemek için,
*/30 * * * * /path/to/pingall.sh > /path/to/log.txt
Log.txt çıktısı
$ cat /path/to/log.txt
Fri Jan 31 15:06:01 IST 2014
node 10.12.13.14 is up
node 172.15.48.3 is up
node 192.168.45.54 is up
...
node 48.114.78.227 is down
#!/bin/bash
while read hostname
do
ping -c 1 -t 1 "$hostname" > /dev/null 2>&1 &&
echo "Ping Status of $hostname : Success" ||
echo "Ping Status of $hostname : Failed"
done < host.txt
$ cat host.txt
host1.example.com
192.168.0.123
8.8.8.8
...
...
google.com
Bkz.
Http://www.thelinuxtips.com/2012/06/shell-script-to-ping-multiple-hosts/
Bu komut dosyasını kontrol edin.
#!/bin/bash
for i in `seq ${2} ${3}`
do
ping -c 1 ${1}.${i} > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "${1}.${i} responded."
else
echo "${1}.${i} did not respond."
fi
done
Örneğin ./script 192.168.1 0 10'u çalıştırmak için bu, ips 192.168.1.0'dan 192.168.1.10'a kontrol eder ve ping tamamsa yankılanır ve eğer cevap vermezse cevap vermez.
Not: Aralık ve IP'ler her zaman aynıysa $ 1 $ 2 $ 3'ü statik değişkenlerle değiştirebilirsiniz.
5 IP'niz olduğunu varsayalım (yalnızca cevabı azaltmak için)
#!/usr/bin/bash
for i in xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx xxx.xxx.xxx.xxxx
do
ping -c 5 $i
done
Not: Parantezleri kıvırmayın, IP'ler arasında Virgül Yok (,).
Umarım yardımcı olur.
Ör:
[raja @ scripts]$ cat ping.sh
for i in 74.125.236.70 98.139.183.24 65.55.206.228 91.189.94.156 198.252.206.24
do
ping -c 5 $i
done
[raja @ scripts]$ ./ping.sh
PING 74.125.236.70 (74.125.236.70) 56(84) bytes of data.
64 bytes from 74.125.236.70: icmp_seq=1 ttl=128 time=11.5 ms
64 bytes from 74.125.236.70: icmp_seq=2 ttl=128 time=11.0 ms
64 bytes from 74.125.236.70: icmp_seq=3 ttl=128 time=10.9 ms
64 bytes from 74.125.236.70: icmp_seq=4 ttl=128 time=16.5 ms
64 bytes from 74.125.236.70: icmp_seq=5 ttl=128 time=18.2 ms
--- 74.125.236.70 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4025ms
rtt min/avg/max/mdev = 10.966/13.682/18.291/3.120 ms
PING 98.139.183.24 (98.139.183.24) 56(84) bytes of data.
64 bytes from 98.139.183.24: icmp_seq=1 ttl=128 time=244 ms
64 bytes from 98.139.183.24: icmp_seq=2 ttl=128 time=253 ms
64 bytes from 98.139.183.24: icmp_seq=3 ttl=128 time=255 ms
64 bytes from 98.139.183.24: icmp_seq=4 ttl=128 time=251 ms
64 bytes from 98.139.183.24: icmp_seq=5 ttl=128 time=243 ms
--- 98.139.183.24 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4251ms
rtt min/avg/max/mdev = 243.511/249.623/255.275/4.674 ms
PING 65.55.206.228 (65.55.206.228) 56(84) bytes of data.
From 10.22.96.94 icmp_seq=5 Packet filtered
--- 65.55.206.228 ping statistics ---
5 packets transmitted, 0 received, +1 errors, 100% packet loss, time 14002ms
PING 91.189.94.156 (91.189.94.156) 56(84) bytes of data.
64 bytes from 91.189.94.156: icmp_seq=1 ttl=128 time=240 ms
64 bytes from 91.189.94.156: icmp_seq=2 ttl=128 time=240 ms
64 bytes from 91.189.94.156: icmp_seq=3 ttl=128 time=240 ms
64 bytes from 91.189.94.156: icmp_seq=4 ttl=128 time=240 ms
64 bytes from 91.189.94.156: icmp_seq=5 ttl=128 time=240 ms
--- 91.189.94.156 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4242ms
rtt min/avg/max/mdev = 240.060/240.222/240.309/0.626 ms
PING 198.252.206.24 (198.252.206.24) 56(84) bytes of data.
64 bytes from 198.252.206.24: icmp_seq=1 ttl=128 time=237 ms
64 bytes from 198.252.206.24: icmp_seq=2 ttl=128 time=237 ms
64 bytes from 198.252.206.24: icmp_seq=3 ttl=128 time=237 ms
64 bytes from 198.252.206.24: icmp_seq=4 ttl=128 time=237 ms
64 bytes from 198.252.206.24: icmp_seq=5 ttl=128 time=242 ms
--- 198.252.206.24 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4251ms
rtt min/avg/max/mdev = 237.600/238.575/242.291/1.933 ms
cron
işinden bahsederken , kullanıcıyı işin sonucunu bildirmek için bir araç gerekli olurdu, yoksa başka bir şey önerir misin?
İyi
Bu kadar basit: Kullanım parallel --gnu
Önce komutu, sonra komutunuzu kullanın.
Örnek IP'leri alın:
$ dig +trace google.com |ipx
127.0.0.1
127.0.0.1
199.7.91.13
199.7.91.13
192.48.79.30
192.48.79.30
173.194.33.161
173.194.33.165
173.194.33.163
173.194.33.164
173.194.33.174
173.194.33.160
173.194.33.167
173.194.33.166
173.194.33.162
173.194.33.169
173.194.33.168
216.239.32.10
216.239.32.10
$ parallel --gnu ping -c1 ::: `dig +trace google.com |ipx`
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.018 ms
--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.018/0.018/0.018/0.000 ms
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.017 ms
--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.017/0.017/0.017/0.000 ms
PING 173.194.33.132 (173.194.33.132) 56(84) bytes of data.
64 bytes from 173.194.33.132: icmp_req=1 ttl=54 time=20.5 ms
--- 173.194.33.132 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 20.526/20.526/20.526/0.000 ms
PING 173.194.33.131 (173.194.33.131) 56(84) bytes of data.
64 bytes from 173.194.33.131: icmp_req=1 ttl=54 time=20.7 ms