উত্তর:
ফপিং আমার পক্ষে কাজ করে নি ... আমার ক্ষেত্রে, বেশিরভাগ সময় আমি এটি দেখতে চাই মূলত সার্ভার রিবুট করার সময় ... এটি উইন্ডোজে খুব সুন্দর কাজ করে ...
এতে আমাকে সহায়তা করতে আমি একটি সহজ স্ক্রিপ্ট (@entropo উত্তর প্রসারিত) তৈরি করি যা এই প্রশ্নের উত্তর দিতে সহায়তা করতে পারে:
https://gist.github.com/brunobraga/7259197
#!/bin/bash
host=$1
if [ -z $host ]; then
echo "Usage: `basename $0` [HOST]"
exit 1
fi
while :; do
result=`ping -W 1 -c 1 $host | grep 'bytes from '`
if [ $? -gt 0 ]; then
echo -e "`date +'%Y/%m/%d %H:%M:%S'` - host $host is \033[0;31mdown\033[0m"
else
echo -e "`date +'%Y/%m/%d %H:%M:%S'` - host $host is \033[0;32mok\033[0m -`echo $result | cut -d ':' -f 2`"
sleep 1 # avoid ping rain
fi
done
এবং ব্যবহার এমন কিছু:
আমি খুঁজে পাওয়া সবচেয়ে ভাল জিনিসটি ছিল- ও পতাকা ব্যবহার করা (নোট করুন যে এটি সমস্ত ডিস্ট্রোজে কাজ করে না - লিনাক্স মিন্ট 17.1 রেবেকা আইপুটিলস-পিং 3: 20121221-4ubuntu1.1 ব্যবহার করে)
$ ping -O 10.10.5.1
64 bytes from 10.10.5.1: icmp_seq=53 ttl=245 time=460 ms
no answer yet for icmp_seq=54
64 bytes from 10.10.5.1: icmp_seq=55 ttl=245 time=265 ms
64 bytes from 10.10.5.1: icmp_seq=56 ttl=245 time=480 ms
no answer yet for icmp_seq=57
64 bytes from 10.10.5.1: icmp_seq=58 ttl=245 time=348 ms
64 bytes from 10.10.5.1: icmp_seq=59 ttl=245 time=515 ms
no answer yet for icmp_seq=60
64 bytes from 10.10.5.1: icmp_seq=61 ttl=245 time=320 ms
64 bytes from 10.10.5.1: icmp_seq=62 ttl=245 time=537 ms
ম্যান পৃষ্ঠা থেকে:
-O Report outstanding ICMP ECHO reply before sending next packet.
This is useful together with the timestamp -D to log output to a
diagnostic file and search for missing answers.
ping
; ডেবিয়ান হুইজি তে আমি " ping: invalid option -- 'O'
" পাই , তবে জেসির উপর এটি আপনার নোট হিসাবে কাজ করে। আপনি এই তথ্য অন্তর্ভুক্ত আপনার উত্তর আপডেট করতে ইচ্ছুক হতে পারে। (আমি আউটপুট এবং
কোনও হোস্ট শেল স্ক্রিপ্টগুলিতে রয়েছে কিনা তা দেখার জন্য আমি যখন পিং ব্যবহার করি, তখন আমি এই জাতীয় কিছু করি:
ping -W 1 -c 1 $HOST 2>&1 > /dev/null || (echo -n "dead!"; false) && command-that-needs-host-to-be-up
মূলত, একটি আইসিএমপি প্রেরণ করে যে কোনও আউটপুট ছাড়াই একটি সেকেন্ডে সময় বেরিয়ে যায় এবং প্রস্থান কোডটি ব্যবহার করে পরবর্তী ক্রিয়াটি প্রবেশ করতে পারে।
সাধারণের ping
পক্ষে এটি করার কোনও উপায় নেই । আপনি যদি কিছু স্ক্রিপ্ট করার চেষ্টা করছেন তবে আপনার কাছে কিছু বিকল্প রয়েছে:
ping -c 2 <ip>
RESULT=$?
echo $RESULT
1
পিং ব্যর্থ হলে, $?
1 হবে, পিং সফল হলে $?
0 হবে।
অন্য বিকল্পটি ব্যবহার করছে fping
যা সিসকোর মতো অনেক কাজ করে ping
:
$ fping 200.1.1.1
200.1.1.1 is unreachable
$ fping 192.168.1.1
192.168.1.1 is alive
ব্রুনো.ব্রাগা দ্বারা উপরের স্ক্রিপ্টটি ঠিক ঠিক কাজ করে, তবে ব্যক্তিগতভাবে আমি শেল প্রোফাইলে (যেমন। বাশরাক) কোনও ব্যবহারের নাম পছন্দ করি যাতে এটি প্রতিদিনের ব্যবহারের ক্ষেত্রে হতে পারে।
নীচের আমার সমাধানটিও স্বয়ংক্রিয়ভাবে ECHO অনুরোধের ক্রম সংখ্যা গণনা করে:
alias pingt='__pingt() { s=0; while :; do s=$(($s+1)); result=$(ping $1 -c1 -W1 |/bin/grep from) && echo "$result, seq=$s" && sleep 1 || echo timeout; done }; __pingt $1'
আউটপুট উদাহরণটি যখন হোস্ট একটি সময়সীমা সহ অস্থির থাকে:
$ pingt 10.10.10.126
64 bytes from 10.10.10.126: icmp_req=1 ttl=64 time=0.235 ms, seq=1
64 bytes from 10.10.10.126: icmp_req=1 ttl=64 time=0.228 ms, seq=2
64 bytes from 10.10.10.126: icmp_req=1 ttl=64 time=0.209 ms, seq=3
64 bytes from 10.10.10.126: icmp_req=1 ttl=64 time=0.241 ms, seq=4
64 bytes from 10.10.10.126: icmp_req=1 ttl=64 time=0.195 ms, seq=5
64 bytes from 10.10.10.126: icmp_req=1 ttl=64 time=0.211 ms, seq=6
timeout
64 bytes from 10.10.10.126: icmp_req=1 ttl=64 time=0.267 ms, seq=8
64 bytes from 10.10.10.126: icmp_req=1 ttl=64 time=0.232 ms, seq=9
^C
অবশ্যই, ত্রুটিটি হ'ল: সিটিআরএল-সি চাপলে কোনও পরিসংখ্যান শেষ হয় না। যদি ইচ্ছা হয় তবে শেল স্ক্রিপ্ট দ্বারা ন্যূনতম / গড় / সর্বোচ্চ গণনা করাও সম্ভব হবে, এমডেভির সুযোগ ছাড়াই।
আমি ভয় পাই তবে মানক পিংয়ের সাথে এর জন্য 100% সমাধান নেই। যদিও সাথে ভার্বোজ আউটপুট জন্য পিং -v সময়সীমা শেষ হওয়ার ক্ষেত্রে নীরব থাকবে। আপনি ব্যবহার করার চেষ্টা করতে পারেন:
ping -w 2 192.168.199.1
PING 192.168.199.1 (192.168.199.1) 56(84) bytes of data.
--- 192.168.199.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1007ms
এটি 2 সেকেন্ড পরে পিং থামবে এবং তারপরে সংক্রমণিত প্যাকেটের সংখ্যা এবং প্যাকেটের ক্ষতি দেখায়। আর একটি বিকল্প মিটার ব্যবহার করা হবে ।
nomad@local:~$ fping -l -e 8.8.8.8
8.8.8.8 : [0], 92 bytes, 183 ms (183 avg, 0% loss)
8.8.8.8 : [1], 92 bytes, 61.4 ms (122 avg, 0% loss)
8.8.8.8 : [2], 92 bytes, 164 ms (136 avg, 0% loss)
8.8.8.8 : [3], 92 bytes, 163 ms (143 avg, 0% loss)
8.8.8.8 : [5], 92 bytes, 158 ms (146 avg, 16% loss)
8.8.8.8 : [6], 92 bytes, 122 ms (142 avg, 14% loss)
8.8.8.8 : [7], 92 bytes, 134 ms (141 avg, 12% loss)
8.8.8.8 : [8], 92 bytes, 130 ms (140 avg, 11% loss)
nomad@local:~$ fping -version
fping: Version 3.2
fping: comments to david@schweikert.ch
fping
ভাল, এবং BTW -e
যখন প্রয়োজন হয় -l
বা -c
যুক্ত করা হয় না , কেবল ব্যবহার করতে পারে fping -l 8.8.8.8
, আউটপুট একই।
আমি সত্যিই ব্রুনোর শেল স্ক্রিপ্টটি পছন্দ করি। আমি সমস্ত ব্যর্থতা দিয়ে একটি ফাইল তৈরি করতে একটি লাইন যুক্ত করেছি।
প্রতিধ্বনি date +'%Y/%m/%d %H:%M:%S'
- " - হোস্ট $ হোস্টটি হল \ 033 [0; 31 মিমি \ 033 [0 মি" >> >> /lostpacket.txt
কিছু স্ক্রিপ্ট না করে
ping -f -i 1 hostname
সুবিধা : স্ট্যান্ডার্ড লিনাক্স কমান্ড - ইনস্টল বা স্ক্রিপ্ট কিছুই।
অসুবিধাগুলি :
একটি ন্যূনতম স্ক্রিপ্ট সহ
#!/bin/bash
while :; do
ping -W1 -c 1 "$@" | grep 'bytes from '
case $? in
0 ) sleep 1 ;;
1 ) echo -e "request timeout" ;;
* ) exit ;;
esac
done
অসুবিধাগুলি : আপনি শেষে কোনও পরিসংখ্যান পাবেন না এবং আপনি এই 3 টি পিং বিকল্প ব্যবহার করতে পারবেন না:
-i
প্যাকেট প্রেরণের মধ্যে ব্যবধান পরিবর্তন করতে (এটি 1 সেকেন্ডে হার্ডকোডযুক্ত)-W
সময়সীমা পরিবর্তন করতে (এটি 1 সেকেন্ডে হার্ডকোডযুক্ত)-c
এন প্যাকেট প্রেরণের পরে থামাতেবিটিডাব্লু: লিনাক্স সিএলআই সরঞ্জাম থেকে কার্যত কার্যকারিতাটির এটি একটি অত্যন্ত বিরল উদাহরণ যা আমি মিস করেছি তবে আমি একটি উইন্ডোজ সরঞ্জামে পেয়েছি। মৃত্যুদন্ড কার্যকর করা যা নিয়মকে তারা যেমন বলেছে প্রমাণ করে :-)
আপনি যদি উইন্ডোগুলির মতো এবং টাইমস্ট্যাম্পের সাথে অবিচ্ছিন্ন পিং সঞ্চালন করতে চান তবে এটি ব্যবহার করুন। 192.168.0.1
আপনার নিজের আইপি ঠিকানা দিয়ে প্রতিস্থাপন নির্দ্বিধায়
while :; do ping -c 1 -t 1 192.168.0.1 > /dev/null && echo "`date` >>> Reply OK" && sleep 1 || echo "`date` >>> Request timed out"; done
উদাহরণ ঠিক আছে উত্তর দিন
[user@Linux ~]$ while :; do ping -c 1 -t 1 192.168.0.1 > /dev/null && echo "`date` >>> Reply OK" && sleep 1 || echo "`date` >>> Request timed out"; done
Wed Jan 3 03:41:49 GMT 2018 >>> Reply OK
Wed Jan 3 03:41:50 GMT 2018 >>> Reply OK
Wed Jan 3 03:41:51 GMT 2018 >>> Reply OK
^Z
[23]+ Stopped sleep 1
[user@Linux ~]$
উদাহরণ অনুরোধের সময়সীমা শেষ
[user@Linux ~]$ while :; do ping -c 1 -t 1 192.168.0.254 > /dev/null && echo "`date` >>> Reply OK" && sleep 1 || echo "`date` >>> Request timed out"; done
Wed Jan 3 03:41:36 GMT 2018 >>> Request timed out
Wed Jan 3 03:41:37 GMT 2018 >>> Request timed out
Wed Jan 3 03:41:38 GMT 2018 >>> Request timed out
^Z
[22]+ Stopped ping -c 1 -t 1 192.168.0.254 >/dev/null
[user@Linux ~]$
সাধারণ পিং আসলে আপনাকে সময়সীমা দেখায়। পিংসের মধ্যে থাকা seq = মানটি দেখে আপনি বলতে পারবেন যে কত সময়সীমা শেষ হয়েছে
64 bytes from 192.168.12.46: icmp_seq=8 ttl=62 time=46.7 ms
64 bytes from 192.168.12.46: icmp_seq=11 ttl=62 time=45.3 ms
EG 3 সময় আউট উপরের 2 টি পিংয়ের মধ্যে ঘটেছিল যেহেতু প্রথমটি ছিল প্রথম seq=8
এবং দ্বিতীয়টি ছিল seq=11
(9 এবং 10 টাইম আউটস)
seq=sequence
।