ইন্টারনেট সংযোগ ড্রপ সতর্কতা


9

এমন কোনও সফ্টওয়্যার কী আছে যা 5 মিনিটের জন্য কোনও ইন্টারনেট সংযোগ না থাকা অবস্থায় একটি সতর্কতা (পিসি স্পিকার) বাজায়?

আমার স্যুইচ / রাউটারটি প্রতি কয়েকদিন পরে সংযোগ বিচ্ছিন্ন হয়ে গেছে বলে মনে হচ্ছে এবং এটি হয়ে গেলে আমি এটি পুনরায় সেট করতে চাই।

PC          -- TP-Link switch/router -- FO
192.168.x.1 -- 192.168.x.2 / x.y.z.a -- a.b.c.d

3
সুস্পষ্টভাবে চিহ্নিত করতে নয়, তবে আপনি একটি ত্রুটিযুক্ত স্যুইচ / রাউটার সমস্যার খুব চূড়ান্ত সমাধান
নিচ্ছেন

উত্তর:


7

আপনি যা চান তা করতে আপনি এই স্ক্রিপ্টের একটি পরিবর্তিত সংস্করণ ব্যবহার করতে পারেন:

#!/bin/bash

downTime=0
lastAccessTime=$(date +"%s")
while [ true ]; do
if ! ping -c1 google.com >& /dev/null; then
    downTime=$(( $(date +"%s") - $lastAccessTime ))
else
    downTime=0
    lastAccessTime=$(date +"%s")
fi

sleep 15

if [ $downTime -ge 300 ]; then
   echo "alert"
fi
done

আমরা "সংযুক্ত" উদাহরণ

ডিবাগিং চালু হওয়ার সাথে সাথে আপনি দেখতে পাবেন যে স্ক্রিপ্টটি কী করছে।

set -x

"সংযোগ শেষ" অবস্থাটি প্রদর্শনের জন্য একটি বৈধ হোস্টনামের সাথে দৌড়ানো।

$ ./watcher.bash
+ downTime=0
++ date +%s
+ lastAccessTime=1402276955
+ '[' true ']'

উপরেরটি কয়েকটি পরিবর্তনশীল সূচনা করে এবং শেষ বার লুপের মধ্য দিয়ে গিয়েছিল তা নির্ধারণ করে $lastAccessTime। আমরা এখন গুগলকে পিং করার চেষ্টা করি।

+ ping -c1 google.com
+ downTime=0
++ date +%s
+ lastAccessTime=1402276955

আমরা এখন যে কোনও নিচের সময় গণনা করি $downTime, যদি পিং ব্যর্থ হয়, অন্যথায়, আমরা $downTimeশূন্যে পুনরায় সেট হয়ে আবার গণনা করি $lastAccessTime

+ sleep 15

এখন আমরা 15 সেকেন্ড অপেক্ষা করি।

+ '[' 0 -ge 300 ']'

এখন আমরা> 5 মিনিট (300 সেকেন্ড) নেমে এসেছি কিনা তা পরীক্ষা করে দেখি। তারপরে আমরা পুনরায় whileলুপ দিয়ে যাচ্ছি ।

+ '[' true ']'
+ ping -c1 google.com
+ downTime=0
++ date +%s
+ lastAccessTime=1402276970
+ sleep 15
....

যতক্ষণ না আমরা আপ আছি, pingপ্রতি 15 সেকেন্ডে আমরা কমান্ডটি যাচাই করা ছাড়া অন্য কিছুই হবে না ।

আমরা "সংযুক্ত" উদাহরণ're

এখন "সংযোগ বন্ধ রয়েছে" রাষ্ট্রটি অনুকরণ করার জন্য, আমরা যে হোস্টনামটি পিং করছি তা সরিয়ে নেব এবং একটি নকল ব্যবহার করব google1234567890.com,। ডিবাগিং সক্ষম করে আমাদের স্ক্রিপ্টের একটি রান পুনরাবৃত্তি এখন আমরা দেখি কিছু আসল ডাউন সময় গণনা করা হয়।

$ ./watcher.bash
+ downTime=0
++ date +%s
+ lastAccessTime=1402277506
+ '[' true ']'
+ ping -c1 google1234567890.com
++ date +%s
+ downTime=0
+ sleep 15
+ '[' 0 -ge 300 ']'
+ '[' true ']'
+ ping -c1 google1234567890.com
++ date +%s
+ downTime=15
+ sleep 15
...

$downTimeএখন পর্যন্ত 15 সেকেন্ডের সমান এর উপরে লক্ষ্য করুন । আমরা যদি আরও কিছুক্ষণ অপেক্ষা করি তবে আমরা এটি দেখতে পাব:

+ '[' true ']'
+ ping -c1 google1234567890.com
++ date +%s
+ downTime=300
+ sleep 15

আমরা ডাউন সেকেন্ডে 300 সেকেন্ড উপার্জন করেছি। সুতরাং এখন যখন আমরা পরীক্ষা করি, আমরা বার্তাটি প্রিন্ট করি alert,।

+ '[' 300 -ge 300 ']'
+ echo alert
alert
+ '[' true ']'
+ ping -c1 google1234567890.com
++ date +%s
+ downTime=315
+ sleep 15

সংযোগটি পুনরুদ্ধার করা এবং এটি pingআবার সফল হওয়া অবধি এই রাজ্যটি অব্যাহত থাকবে ।

তাহলে কি একটি শব্দ?

এটা সহজ. এটি করতে আপনি বিভিন্ন সরঞ্জাম ব্যবহার করতে পারেন। আমি ভালো কিছু ব্যবহার করেন soxঅথবা mplayerযেমন একটি হিসাবে একটি অডিও ফাইল প্লে করতে .mp3বা .wavযখন সংযোগ বিচ্ছিন্ন হয়েছে, একটি যথাযথ শব্দ আপনি প্রতি 15 সেকেন্ড শুনতে চাই সঙ্গে ফাইল।

mplayer someaudio.wav

alertসংযোগটি বন্ধ রয়েছে বলে অডিও প্রতিক্রিয়া পেতে কেবল এই রেখার সাথে উপরে বার্তাটি প্রতিস্থাপন করুন ।

পিংয়ের সাথে সমস্যাগুলির সময় নির্ধারণ করা

আপনি যদি pingউপরের পদ্ধতিতে ব্যবহার করেন তবে সম্ভবত pingসংযোগ বন্ধ হয়ে যাওয়ার পরে এটি ব্যর্থ হওয়ার জন্য আক্ষরিক 10-10 সেকেন্ড সময় লাগে এমন একটি ধীরে ধীরে পিছনে পড়তে হবে। এই উত্তর ও উত্তর প্রশ্নোত্তর শিরোনামে আমার উত্তর দেখুন: কোনও আদেশের আউটপুট পুনর্নির্দেশ কিভাবে করবেন? fingপরিবর্তে কমান্ড লাইন সরঞ্জাম ব্যবহার করে উদাহরণস্বরূপ । এই সরঞ্জামটি প্রথাগতের তুলনায় আরও দ্রুত ব্যর্থ হবে ping


বিটিডব্লু আমি beepকমান্ডটি ব্যবহার করছি , chown /dev/tty0আমি কি এটি ছাড়াই এটি ব্যবহার করতে পারি তা নিরাপদ sudo?
কোকিজু

1
@ কোকিজু - আপনার মালিকানা পরিবর্তন করা উচিত নয় /dev/tty0
slm

1
হুররে sox! @Kokizzu - অনুমতি ছাড়ার সম্পর্কে SLM ডান /dev/tty0একা ডিভাইস, কিন্তু আপনি একটি পেতে পারে সিউডো-টার্মিনাল /dev/pts/[num] চরিত্র ডিভাইস একই ধরনের যে - ডিভাইস xtermপ্রতিটি জানালা, উদাহরণস্বরূপ জন্য ব্যবহার করে - ভালো কিছু সঙ্গে screenবা tmuxবা এমনকি ssh। এগুলি আপনি আরও সুরক্ষিতভাবে নিয়ন্ত্রণ করতে পারেন কারণ তারা /dev/ptmxযেভাবেই কেবল মাস্টার ডিভাইসে স্লেভ ডিভাইস হয়ে থাকে এবং একই ধরণের সমস্যা সৃষ্টি করে না, যেমন বলে যে কোনও ব্যবহারকারীর মালিকানাধীন /bin/loginপ্রক্রিয়া - যা অন্য ক্ষেত্রে ঘটতে পারে happen
মাইকজার্ভ

aplay alert.wavশব্দটি প্লে করার একটি আরও মানসম্মত উপায় হ'ল এটি ALSA সিস্টেমের অংশ এবং বেশিরভাগ ডিস্ট্রোজে প্রাকবান্ডেল হয়।
রায় ফস

4

আপনি যদি লিনাক্স ব্যবহার করেন তবে আপনি স্ক্রিপ্টের মধ্যে পিং ব্যবহার করতে পারেন google.comউদাহরণস্বরূপ:

counter=0
while [ true ]
do
ping -c 1 google.com > /dev/null 2>&1
if [ $? -ne 0 ] 
then
    let "counter +=1"
else
    let "counter = 0"
fi
if [ $counter -eq 300 ] # we assume that one ping need one second (300 is 5 minutes)
then
   echo "alert"
fi
done

3
এটি কাজ করবে, তবে আপনি এর fingপরিবর্তে ব্যবহার বিবেচনা করতে চাইতে পারেন pingpingCmd কমান্ড। সফল না হলে ব্যর্থ হতে কিছুটা সময় নিতে পারে। fingOtherhand কমান্ড 1 সেকেন্ড মধ্যে ব্যর্থ হবে। আরও জানতে আমার এ প্রশ্নোত্তর দেখুন: কোনও আদেশের আউটপুট কীভাবে পুনর্নির্দেশ করা যায়? । আমি উভয় ব্যবহার করে pingএবং দেখায় fing
slm

@ এসএমএল, আপনার সম্পাদনার জন্য ধন্যবাদ, আমি বিভ্রান্ত হয়ে পড়েছিলাম কীভাবে পিংটি কেবল এক সেকেন্ডের জন্য স্থায়ী করতে হবে
নিদাল

দেখে মনে হচ্ছে এটি তাত্ক্ষণিক প্রতিক্রিয়া দেখায়, যেমন ইথারনেট শক্তি হারাতে থাকলে এটি প্রতি সেকেন্ডে সীমাহীন সংখ্যক বার ব্যবহার করবে ute sleep 1এটি প্রতিরোধের জন্য যথেষ্ট।
রায় ফস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.