Pertanyaan ping beberapa IP menggunakan bash?


Saya memiliki 10 nomor IP yang harus saya ping setiap hari untuk diperiksa, Bagaimana saya bisa melakukannya dengan menggunakan skrip BASH. Sehingga saya dapat mengotomatisasi tugas itu dengan menggunakan cron. Saya ingin skrip BASH saja.

Terima kasih.


14
2018-01-31 05:24


asal


Di bawah ini jawaban saya telah menyebutkan IP Google, yahoo, msn dll. Saya telah mencoba itu sendiri. Memasukkan {} dan, tidak berfungsi di sini antara IP untuk memisahkannya. berharap ini dapat membantu seseorang di masa depan. Terima kasih telah membaca. - Ten-Coin
Kehidupan yang sibuk terima kasih - Ten-Coin


Jawaban:


Karena rentang ip Anda tidak simetri dan hanya ada 10 node, saya akan menyarankan untuk mencantumkannya dalam file teks. Saya sedang mempertimbangkan file yang berisi daftar itu list.txt yang berisi daftar ip satu di setiap baris seperti yang ditunjukkan di bawah ini,

10.12.13.14
172.15.48.3
192.168.45.54
...
48.114.78.227

Anda dapat menggunakan skrip ini,

#!/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

Untuk memperbarui status menjalankan node Anda dengan selang waktu 30 menit digunakan di crontab,

*/30 * * * * /path/to/pingall.sh > /path/to/log.txt

Output dari log.txt

$ 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

14
2018-01-31 09:35



bukankah itu yang Anda harapkan? - souravc
ini tampaknya persis apa yang harus dicari OP .. dan karena situs web seperti google.com, yahoo.com, dll. menggunakan beberapa server untuk menangani permintaan akan lebih baik untuk melakukan ping dengan nama domain mereka (sehingga Anda mungkin tidak akan harus mengubah IP dalam daftar ping Anda minggu mendatang) .. - precise
Bekerja dengan baik, saya memposting jawaban yang sedikit dimodifikasi yang saya gunakan di dalam lingkungan Travis CI. - MitchellK


#!/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

Lihat:
http://www.thelinuxtips.com/2012/06/shell-script-to-ping-multiple-hosts/


2
2017-08-15 00:35





Periksa skrip ini.

   #!/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

Untuk menjalankan ./script 192.168.1 0 10 misalnya ini akan ckeck ips 192.168.1.0 ke 192.168.1.10 dan echo menjawab jika ping itu baik dan tidak merespon jika tidak.

NB: Anda dapat mengganti $ 1 $ 2 $ 3 dengan variabel statis jika rentang dan IP selalu sama.


1
2018-01-31 05:48



IP tidak dari kisaran yang sama. itulah kriteria di baliknya. terima kasih atas jawaban Anda. + 1 - Ten-Coin
ok sebutkan itu di pertanyaan Anda. Terima kasih atas + - Maythux
Skrip yang rapi dan sederhana yang bisa sangat berguna (yaitu: pada perangkat yang disematkan), bahkan ketika itu tidak mengatasi 100% kondisi pertanyaan. Terimakasih. +1 pantas. - Sopalajo de Arrierez


echo 192.168.1.1 192.168.1.2 192.168.1.3 | xargs -n1 ping -w 1

atau dengan grep, hanya melihat node non ping

echo 192.168.1.1 192.168.1.2 192.168.1.3 | xargs -n1 ping -w 1 | grep -b1 100

1
2018-01-07 15:19





Baik

Sesederhana itu: Gunakan parallel --gnu perintah dan kemudian perintah Anda.

Dapatkan contoh IP:

$ 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

1
2017-10-24 14:19





Asumsikan bahwa Anda memiliki 5 IP (untuk mengurangi jawaban saja), maka Anda dapat melakukan ping

#!/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

Catatan: Tidak kurung kurung, No Commas (,) antara IP.

Semoga itu membantu.

Ex:

[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

0
2018-01-31 05:26



Anda tidak menunjukkan implementasi dengan cron sebagaimana disebutkan dalam Q Anda .. juga bagaimana skrip itu akan memberitahukan hasil dari permintaan ping. - precise
Saya menyebutkan bahwa saya hanya menginginkan skrip. Cron bukan bagian dari pertanyaan. Cron menyebutkan mengapa saya membutuhkan skrip ini dan menyebutkan tujuan skrip ini sebagai tugas cron. - Ten-Coin
@hash Cobalah sebelum bertanya pada sahabatku. Terima kasih telah mencari. - Ten-Coin
Saya tidak pernah mengatakan skrip tidak akan berfungsi .. tetapi seperti yang disebutkan Q Anda cron pekerjaan, sarana untuk memberi tahu pengguna hasil pekerjaan akan diperlukan, atau apakah Anda menyarankan sesuatu yang lain? - precise
tujuan saya adalah cron job, maksud saya mengapa saya membutuhkan skrip BASH ini. Tapi kebutuhan saya adalah bash @hash - Ten-Coin