আমি কীভাবে কনসোলে ইন্টারনেট সংযোগ পরীক্ষা করতে পারি?


31

কনসোল থেকে ইন্টারনেট সংযোগ চেক করার কোনও সহজ উপায় আছে? আমি শেল স্ক্রিপ্টে চারপাশে খেলার চেষ্টা করছি। আমি মনে করি একটি ধারণা হ'ল ইন্টারনেট সংযোগটি ঠিকঠাক কাজ করছে কিনা তা ব্যাখ্যা করার জন্য HTTP প্রতিক্রিয়া কোডটি পরীক্ষা করে দেখুন। তবে আমি মনে করি যে কোনও সাইট কখনও ক্র্যাশ হবে না এমন চেকিংয়ের প্রয়োজনীয়তা ছাড়াই অবশ্যই সহজ উপায় থাকতে হবে;)wget --spider http://www.google.co.in/

সম্পাদনা: মনে হচ্ছে অনেকগুলি কারণ থাকতে পারে যা স্বতন্ত্রভাবে পরীক্ষা করা যেতে পারে, ভাল জিনিস। এই মুহুর্তে আমার উদ্দেশ্যটি আমার ব্লগটি বন্ধ আছে কিনা তা পরীক্ষা করা। প্রতি মিনিটে এটি পরীক্ষা করার জন্য আমার কাছে সেটআপ ক্রোন রয়েছে। এর জন্য, আমি আমার ব্লগের এইচটিটিপি প্রতিক্রিয়া কোড - স্পাইডারটির চেক করছি। যদি এটি 200 না হয় তবে এটি আমাকে অবহিত করে (আমি বিশ্বাস করি এটি কেবল পিং করার চেয়ে এটি আরও ভাল হবে, কারণ সাইটটি ভারী বোঝা হতে পারে এবং সময় শেষ হতে পারে বা খুব দেরিতে প্রতিক্রিয়া জানায়)। গতকাল, আমার ইন্টারনেট নিয়ে কিছু সমস্যা ছিল। ল্যানটি সূক্ষ্মভাবে সংযুক্ত ছিল তবে কেবল আমি কোনও সাইটে অ্যাক্সেস করতে পারিনি। সুতরাং আমি বিজ্ঞপ্তি পেতে থাকি কারণ স্ক্রিপ্টটি উইজেটের প্রতিক্রিয়ায় 200 খুঁজে পায় না couldn't এখন আমি নিশ্চিত করতে চাই যে আমার সাথে ইন্টারনেট কানেক্টিভিটি থাকলে এটি আমাকে বিজ্ঞপ্তি প্রদর্শন করে।

সুতরাং, ডিএনএস এবং ল্যান সংযোগের জন্য পরীক্ষা করা আমার কাছে কিছুটা ওভারকিল কারণ এটি কী সমস্যা তা নির্ধারণ করার মতো নির্দিষ্ট প্রয়োজনীয়তা আমার নেই। সুতরাং আপনি কীভাবে পরামর্শ দিন আমি এটি কীভাবে করব?

আমার ব্লগের ডাউনটাইম চেক করতে এখানে আমার স্ক্রিপ্ট রয়েছে:

#!/bin/bash

# Sending the output of the wget in a variable and not what wget fetches
RESULT=`wget --spider http://blog.ashfame.com 2>&1`
FLAG=0

# Traverse the string considering it as an array of words
for x in $RESULT; do
    if [ "$x" = '200' ]; then
        FLAG=1 # This means all good
    fi
done

if [ $FLAG -eq '0' ]; then
    # A good point is to check if the internet is working or not
        # Check if we have internet connectivity by some other site
        RESULT=`wget --spider http://www.facebook.com 2>&1`
        for x in $RESULT; do
            if [ "$x" = '200' ]; then
                FLAG=1 # This means we do have internet connectivity and the blog is actually down
            fi
        done

    if [ $FLAG -eq '1' ]; then
        DISPLAY=:0 notify-send -t 2000 -i /home/ashfame/Dropbox/Ubuntu/icons/network-idle.png "Downtime Alert!" "http://blog.ashfame.com/ is down."         
    fi  
fi

exit

এইভাবে আমাকে কেবলমাত্র আমার ব্লগের প্রতিক্রিয়া কোডে কোনও সমস্যা আছে সেখানে ইন্টারনেট সংযোগের জন্য পরীক্ষা করা দরকার। এটি কিছুটা ভারী (যেমন আমি পিং ব্যবহার করছি না) তবে কোনও মিথ্যা ধনাত্মকতা দেওয়া উচিত নয়। রাইট? এছাড়াও আমি কীভাবে প্রতিটি সময় ফেসবুক, গুগল, ইয়াহু ইত্যাদি কোনও আলাদা সাইটে পিনিংকে এলোমেলো করে তুলতে পারি এছাড়াও (আমি কোনও আই / ও এড়াতে চেষ্টা করছিলাম) আমি লগ ফাইলটিতে লিখতে পারি যার মাধ্যমে আমি ডাউনটাইম চেকগুলি গণনা পরীক্ষা করতে পারি এবং তারপরে সাইটটি ডাউন না হওয়া পর্যন্ত আরও চেকগুলি এড়িয়ে চলুন বা দীর্ঘ চেকগুলি তৈরি করুন (প্রতি মিনিটের পরিবর্তে 10 মিনিট)। আপনি কি মনে করেন?


"ইন্টারনেট সংযোগ" এর সুস্পষ্ট সংজ্ঞা নেই, আপনি কেবলমাত্র কোনও নির্দিষ্ট পরিষেবা বা পরিষেবার সেটের সংযোগটি পরীক্ষা করতে পারেন। যদি আপনি "ল্যান" সংযোগটি বোঝায় তবে আপনার নেটওয়ার্ক গেটওয়ে পিং করা একটি ভাল বিকল্প।
জোও পিন্টো

সাধারণ লোকের ভাষায়, আমি ইন্টারনেট সংযোগটি সংজ্ঞায়িত করব যদি আপনি ইন্টারনেট অ্যাক্সেস করতে পারেন। এর মধ্যে যে কোনও কিছুতে সমস্যা হতে পারে। আমার ঠিক এটির কাজ করা ঠিক আছে বা দায়বদ্ধ হতে পারে এমন সমস্যার সেট থেকে বেরিয়ে সমস্যা রয়েছে কিনা তার মধ্যে পার্থক্য করা দরকার। আমি আশা করি আমি নিজেকে পরিষ্কার করে দিয়েছি :)
আশফাম

উত্তর:


29

নির্দিষ্ট ওয়েবসাইট চালু কিনা তা পরীক্ষা করা হচ্ছে Che

প্রথমত, একাধিক ভাল অনলাইন মনিটরিং পরিষেবা উপলব্ধ। একটি বাছাই করতে, পিংডম একটি লক্ষ্য নিরীক্ষণের জন্য নিখরচায় অ্যাকাউন্ট অন্তর্ভুক্ত করে। (বিশেষ দ্রষ্টব্য: আমি না কোন ভাবেই Pingdom সঙ্গে সম্বন্ধযুক্ত)।

দ্বিতীয়ত, wget --spiderআপনার নিজস্ব স্ক্রিপ্টের জন্য ব্যবহার করা ভাল ধারণা। আপনার কম্পিউটারটি ডাউন থাকাকালীন বা আপনার ডিএনএস সার্ভার কাজ না করার সময় আপনি কিছু মিথ্যা ইতিবাচক জিনিস পেয়ে যাবেন। রিটার্ন কোডটি পরীক্ষা করা এটি বাস্তবায়নের সোজা উপায়:

wget --spider --quiet http://example.com
if [ "$?" != 0 ]; then
  echo "Website failed!" | mail -s "Website down" your_email@provider.tld
fi

তবুও, এই পদ্ধতির মধ্যে কিছু ত্রুটি রয়েছে। যদি আপনার সরবরাহকারী আপনার ডিএনএস রেকর্ডটি ক্যাশে করে থাকে তবে ডিএনএস সার্ভারটি নিচে রয়েছে, অন্যরা আপনার সাইটে অ্যাক্সেস করতে পারবেন না যদিও মনিটরিং বলছে সবকিছু ঠিক আছে। hostউদাহরণস্বরূপ আপনি সংক্ষিপ্ত রচনা লিখতে পারেন host example.com <your dns server IP>। যদি ডিএনএস সার্ভার সাড়া না দেয় তবে ত্রুটি ফিরে আসবে, এমনকি ওপেনডিএনএস বা আপনার নিজের সরবরাহকারীর ডিএনএস সার্ভার ঠিকঠাক কাজ করলেও।

ইন্টারনেট কাজ করছে কিনা তা পরীক্ষা করা হচ্ছে

এটি প্রতিটি ক্ষেত্রে হ্যান্ডেল করার সত্যিই সহজ উপায় নেই।

আপনি উদাহরণস্বরূপ ping -c1একাধিক সুপরিচিত সাইটগুলিতে চালাতে পারেন (উদাহরণস্বরূপ www.google.com, facebook.com এবং ping.funet.fi) এবং কোনও গন্তব্য পৌঁছনীয় কিনা তা নির্ধারণ করার জন্য রিটার্ন কোডগুলি পরীক্ষা করতে পারেন। আপনি ভেরিয়েবল ব্যবহার করে রিটার্ন কোডটি স্বয়ংক্রিয়ভাবে পরীক্ষা করতে পারেন $?। প্যারামিটার -c1একটিতে পিং প্যাকেটের সংখ্যা সীমিত করছে।

লগইন গেটওয়ে রয়েছে যখন সমস্ত পিংস এবং এইচটিটিপি অনুরোধগুলি পুনঃনির্দেশ করে যখন আপনার কিছু পাবলিক ওয়াইফিসের সাথে সমস্যা দেখা দিতে পারে। যদি তা হয় তবে আপনি অন্য কোনও সাইট অ্যাক্সেস করতে না পারলেও আপনি পিং প্রতিক্রিয়া এবং অ-ত্রুটিযুক্ত HTTP স্থিতি কোডগুলি পেতে পারেন।

আপনি যদি তারের অবস্থাটি চেক করতে চান তবে আপনি এটি ব্যবহার করতে পারেন

sudo ethtool eth0

আউটপুট (অংশ) থেকে:

Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
Link detected: yes

তবে কেবল এটির সাথে সংযুক্ত রয়েছে এবং অন্য প্রান্তে কিছু আছে কিনা তা এটি আপনাকে জানায় না really


এটি সর্বদা আমার সেটআপের জন্য, সর্বদা-অন ইথারনেটে কাজ করা। তবে খুশি যে আপনি উল্লেখ করেছেন যে এটি কিছু ক্ষেত্রে কীভাবে সঠিকভাবে কাজ করবে না। এছাড়াও আমি বিশ্বাস করি যে উইকেটের চেয়ে পিংিং দ্রুততর হবে। আপনি কি মনে করেন? এবং যদি আমি কোথাও 200 টি স্ট্যাটাস কোডের জন্য যাচাই করে নিচ্ছি তবে আমি কেবল এটি পিং করছি। রাইট? বা এমন কিছু আছে যা আমার জানা উচিত?
আশফাম

2
পিং দ্রুত এবং আরও ভাল, কারণ অন্য প্রান্তটি আপনার জন্য রাগ করবে না। পিং বেশ সুরক্ষিত, তবে এটি আপনার ওয়েব পৃষ্ঠাগুলি খোলার গ্যারান্টিও দেয় না। এছাড়াও, এটিও সম্ভব যে ফায়ারওয়াল পিংকে ব্লক করছে তবে এইচটিটিপি অনুরোধের অনুমতি দিচ্ছে।
ওলি

1
4.2.2.2 এর মতো একটি সুপরিচিত ডিএনএস সার্ভারের পিং করা আপনার নেট সংযোগ থাকলেও ভাঙা ডিএনএস ক্ষেত্রেও কার্যকর।
djeikyb

ডিএনএস পরীক্ষার জন্য আপনি অবশ্যই host(ডিএনএস কোয়েরি) ব্যবহার করতে পারেন । এটা খুব দ্রুত।
ওলি

আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ @ অলি এবং @ ডিজিজিক আমি প্রশ্নটি আপডেট করেছি, দয়া করে একবার দেখুন
আশফাম

7

আমি এই পদ্ধতিটি ব্যবহার করছি ...

যদি [["$ (পিং -c 1 8.8.8.8 | গ্রেপ '100% প্যাকেট ক্ষতি')" "! =" "]]; তারপর
    প্রতিধ্বনি "ইন্টারনেট উপস্থিত নেই"
    প্রস্থান 1
আর
    প্রতিধ্বনি "ইন্টারনেট উপস্থিত"
    উইজেট www.site.com
ফাই

আমি ping -c 1 8.8.8.8এবং এর জন্য বিভিন্ন ফলাফল পেয়েছি ping -c 1 www.google.com। ওটা কেমন?
মেরোস

2
নোট করুন যে এটি চীন এবং অন্যান্য দেশগুলিতে ব্যর্থ হবে যা গুগলকে অবরুদ্ধ করে
টম জে নওয়েল

7

আমি সবেমাত্র ব্যবহার করেছি

nm-online

যা নেটওয়ার্ক ম্যানেজার দ্বারা কোনও নেটওয়ার্ক সংযোগ উপস্থিত না হওয়া পর্যন্ত বিরতি দেয়। ভাল কাজ করেছেন। আপনি এটি দিয়ে অন্যান্য জিনিসগুলিও করতে পারেন।


6

কোনও সাইট আপ রয়েছে কিনা তা যাচাই করা সাধারণত কোনও মনিটরিং সরঞ্জাম দিয়ে করা হয় nagios। এটি ধারাবাহিকভাবে সাইটটি পর্যবেক্ষণ করবে এবং আপনাকে আউটেজ সম্পর্কে অবহিত করতে পারে।

ইন্টারনেট কমান্ড লাইন থেকে উপরে আছে কিনা তা পরীক্ষা করার সময় আমি বেশ কয়েকটি পদক্ষেপের মধ্য দিয়ে চলেছি:

  • ইন্টারনেট ping google.comচেক আপ শেষ (ডিএনএস এবং পরিচিত पहुंचযোগ্য সাইট পরীক্ষা করে)।
  • ওয়েব সাইটটি ব্যবহার করতে wgetবা w3mপৃষ্ঠায় আনতে ব্যবহার করা হয়েছে কিনা তা পরীক্ষা করুন ।

যদি ইন্টারনেট বাহ্যিকভাবে নির্ণয় না করে।

  • গেটওয়ে চেক করুন মজাদার। (গেটওয়ে ঠিকানার জন্য ifconfig পরীক্ষা করুন))
  • ডিএনএস সার্ভারগুলি পরীক্ষাযোগ্য। (ঠিকানার জন্য /etc/resolv.conf দেখুন))
  • ফায়ারওয়াল ব্লক করছে কিনা তা পরীক্ষা করে দেখুন। (আমি / ব্লকগুলি লগ করার সাথে সাথে / var / log / syslog পরীক্ষা করুন))

যদি ইন্টারনেট আপ থাকে তবে সাইটটি নীচে উপস্থিত সাইটের সাথে w3m http://isup.me/example.comপ্রতিস্থাপন করে চেক example.comডাউন করা হয়। আপনি যদি ডাব্লু 3 এম ব্রাউজার ইনস্টল না করে থাকেন তবে উইজেট, লিংস বা আপনি যে কমান্ড লাইন ব্রাউজারটি উপলভ্য তা ব্যবহার করুন।


আপনার পরামর্শের জন্য ধন্যবাদ! আমার স্ক্রিপ্টটি আমার সাইটটি ডাউন থাকাকালীন আমাকে পরীক্ষা করার এবং সতর্ক করার প্রাথমিক প্রয়োজনীয়তাটি অন্তর্ভুক্ত করে? কিছু ইন্টারনেট সংযোগের সমস্যা থাকলে এবং এটি শান্ত হবে
আশফাম

দেখে মনে হচ্ছে আপনার স্ক্রিপ্টটি যা চাইবে তা করবে। আপনি যদি বিবৃতিতে উইজেট কমান্ডটি অন্তর্ভুক্ত করতে পারেন if ! wget --spider http:///example.com; then
বিলথোর

আপনার অর্থ উইজেট সর্বদা ২০০ টি HTTP প্রতিক্রিয়া কোডের জন্য 1 ফেরত দেয়?
আশফাম

আমি বলতে চাচ্ছি পরীক্ষা [ $? != 0 ]পরীক্ষা হিসাবে একই ! command। উইজেট ব্যর্থতার জন্য 0 নয় সাফল্যে 0 ফেরত ডকুমেন্টেড হয়। আপনি যদি কোড করেন তবে সেটি যদি একরকম আচরণ করে। যদি উইজেট 200 প্রতিক্রিয়াতে ব্যর্থতা দেয়, পরীক্ষাটি আপনার লেখার কোনওভাবেই ব্যর্থ হবে। একই যদি এটা 200. ছাড়া অন্য কোনো প্রতিক্রিয়া কোড জন্য 0 ফেরৎ
BillThor

ধন্যবাদ! এটি স্ক্রিপ্টটি আরও ছোট এবং সহজে বুঝতে পারবে।
আশফেম

4

এটি ইন্টারনেটের সংযোগের জন্য পরীক্ষার জন্য আমি ব্যবহৃত শেল স্ক্রিপ্ট:

alarm.sh

#! /bin/bash

if curl --silent --head http://www.google.com/ |
    egrep "20[0-9] Found|30[0-9] Found" >/dev/null
then
    echo Internet status: OK
else
    echo Internet status: ERROR
    mpg321 alarm.mp3 &> /dev/null
fi
sleep 60
clear

./alarm.sh

আপনাকে কার্ল এবং mpg321 ইনস্টল করতে হবে

sudo apt-get install curl mpg321

আপনি যদি শ্রাব্য অ্যালার্ম কার্যকারিতা চান তবে আপনাকে একই ফোল্ডারে অ্যালার্ম.এমপি 3 এর নাম পরিবর্তন করতে একটি এমপি 3 সাউন্ড ফাইলের প্রয়োজন হবে। অবশেষে ওয়েবসাইটের ইউআরএল কনফিগার করুন এবং আপনার প্রয়োজনের জন্য egrep।


এই ঠিকভাবে কাজ ব্যবহারকারী একটি ক্যাপটিভ পোর্টালের পেছনে থাকা এবং লগ ইন করেননি এমনকি যখন।
Ashhar হাসান

আপনি egrep -qপরিবর্তে ব্যবহার করতে পারেনegrep ... > /dev/null
wjandrea

স্ক্রিপ্টটি কেবল একটি whileলুপ ব্যবহারের পরিবর্তে কেন নিজেকে কল করে ?
wjandrea

ওহ অপেক্ষা করুন, এটি নিজেকে কল করে না। এটি alarm.shডাব্লুডিকে ডাকা একটি স্ক্রিপ্ট কল করে, তাই আপনি যদি অন্য স্ক্রিনটি থেকে এই স্ক্রিপ্টটি কল করেন তবে তা ত্রুটি হবে, অথবা যদি কোনও স্ক্রিপ্ট alarm.shডাব্লুডিতে বলা হয় তবে এটি পরিবর্তে কল করবে। সুতরাং যে খারাপ অনুশীলন। "$0"পরিবর্তে আপনি ব্যবহার করতে পারেন , তবে একটি whileলুপ আরও ভাল।
wjandrea

"কিছুক্ষণ লুপ ব্যবহার না করে স্ক্রিপ্ট কেন নিজেকে কল করে?": কারণ আমি যখন পোস্টটি তৈরি করছিলাম তখন আমি নুব ছিলাম এবং হ্যাঁ সেই স্ক্রিপ্টটি নিজেই কল করছিল।
01BTC10

2

ইন্টারনেট কাজ করছে কিনা তা পরীক্ষা করা হচ্ছে

sudo nm-tool | grep "State: connected" | wc -l

আউটপুট (অংশ) থেকে:

1 #System is connected to internet

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


2
nm-toolউবুন্টু 15.04+ এ সরানো হয়েছে তবে আপনি nmcliপরিবর্তে এটি ব্যবহার করতে পারেন । উদাহরণস্বরূপ[[ $(nmcli -f STATE -t g) = connected ]]
ছয়

@ সিক্স nmcli -f STATE -t nmভাল জিনিস ওয়েবসাইট থেকে স্বাধীন হচ্ছে!
কুম্ভ শক্তি

1
এটি নোট করুন nm-toolএবং nmcliকেবলমাত্র আপনিই বলবেন আপনি স্থানীয় নেটওয়ার্কের সাথে সংযুক্ত আছেন কি না, যেমন আপনি নিজের ঘরের ওয়াইফাই / ইথারনেটের সাথে সংযুক্ত আছেন কি না। আপনি আপনার স্থানীয় নেটওয়ার্ক, অর্থাৎ ইন্টারনেটের বাইরে কিছুতে পৌঁছাতে পারবেন কিনা তা আপনাকে জানায় না।
সের্গেই কোলোডিয়াজনি

1

আমি এই পদ্ধতিটি ব্যবহার করছি:

if curl -s --head  --request GET www.google.com | grep "200 OK" > /dev/null ; then
    echo "Internet is present"
else
    echo "Internet isn't present"
fi

এটি একটি সুপরিচিত ওয়েবসাইটের সাথে সংযোগ স্থাপনের চেষ্টা করবে এবং এটি যদি এটির সাথে সংযোগ স্থাপন করতে পারে তবে আমরা ধরে নেব যে সেখানে ইন্টারনেট রয়েছে।


0

একই প্রশ্নে আমার সাহায্যের দরকার ছিল এবং আমার উত্তরটি এইভাবে পেয়েছি:

echo $(nm-online) $? connection problems

কিভাবে কাজ করে?
wjandrea

এটি কেবল nm-onlineকমান্ডের স্থিতি (একটি অক্ষর) যাচাই করে দেখছে ... সবকিছু ঠিক থাকলে 0 আসবে। সব UNIXশেল মধ্যে সাধারণ ।
আন্তোনিও

0

ইন্টারনেট কাজ করছে কিনা তা পরীক্ষা করা তুচ্ছ নয়। পিং আইসিএমপি হয়, তাই ওয়েব প্রক্সিটি বন্ধ থাকলেও এটি কাজ করতে পারে। আপনি যদি আইপি দিয়ে পরীক্ষা করেন তবে ডিএনএসের সাথেও একই রকম কিছু ঘটে।

যেহেতু আমার ইন্টারনেট সংযোগটি অস্থির, আমি এই স্ক্রিপ্টটি তৈরি করেছি ( এটির উপর ভিত্তি করে ) যা আমাকে কল করার জন্য মৃদু জোর শব্দ করে এবং ইন্টারনেট সংযোগ ফিরে এলে উবুন্টু বিজ্ঞপ্তি ব্যবহার করে:

#!/bin/bash

hash play 2>&- || { echo >&2 "I require «play» but it's not installed. Try apt-get install sox. Aborting."; exit 1; }

WGET="`which wget`"
URL="http://www.google.com"
delay=3;
noConnectionMessage="No connection, trying again in $delay seconds...";
connectionMessage="WE HAVE INTERNET! :) Trying again in $delay seconds...";

echo "INTERNET TESTER: Type Ctrl+C to quit";
rm --force /tmp/index.site

function playSound {
    time=1;    # Time played
    if [ `sox --version| grep -oP "v[0-9.]+" | sed "s/[v.]//g"` -lt 1431 ]; then    #analize sox version, if greater than v14.3.1 can use pluck
        play -q -n synth $time sine;
    else
        play -q -n synth $time pluck $1;
        #for i in G4 G4 G4 E4;do play -n synth 0.1 pluck $i repeat 2;done    # You can play with something like this also :) (first three notes from Beethoven 5th symphony)
    fi
}

while [ 1 -eq 1 ]; do
    $WGET -q --tries=10 --timeout=2 $URL -O /tmp/index.site &> /dev/null
    if [ ! -s /tmp/index.site ];then
        echo $noConnectionMessage;
        #playSound E2
        sleep 1;
    else
        #~ zenity --warning --text "ADDRESS is back"
        notify-send -i "notification-network-wireless-full" "Connection state:" "$connectionMessage";
        echo $connectionMessage;
        playSound E3
    fi
    sleep $delay;
done

exit 0;

0

আমি এমন একটি স্ক্রিপ্টের সন্ধান করছিলাম যা ক্রমাগত আমার ইন্টারনেট সংযোগ পরীক্ষা করবে, যখনই আমার সার্ভারটি চালু থাকবে এবং আমি এটি তৈরি করবো:

  1. প্রথমে, ফাইপিং ইনস্টল করুন

    apt-get install fping
    
  2. নিম্নলিখিত বিষয়বস্তু দিয়ে /etc/init.d ফোল্ডারে একটি init স্ক্রিপ্ট তৈরি করুন (আমি এটি টেস্টকোন বলেছি)

    #!/bin/bash
    
    PIDFILE=/var/run/testcon.pid
    
    . /lib/lsb/init-functions
    
    case "$1" in
      start)
            log_daemon_msg "Starting internet connection tester"
            /etc/init.d/testcond &
            echo $! > $PIDFILE
            log_end_msg $?
        ;;
      stop)
            log_daemon_msg "Stopping internet connection tester"
            PID=$(cat $PIDFILE)
            kill -9 "$PID"
            log_end_msg $?
        ;;
      *)
        echo "Usage: /etc/init.d/testcon {start|stop}"
        exit 1
        ;;
    esac
    
    exit 0
    
  3. নিম্নলিখিত বিষয়বস্তু দিয়ে /etc/init.d ফোল্ডারে একটি স্ক্রিপ্ট তৈরি করুন (আমি এটিকে টেস্টকন্ড বলেছি)

    #echo Computer starting or testing daemon init
    while [ "$itest" == "" ] 
    do
        #wait 5 seconds 
        sleep 5
        itest=$(fping 8.8.8.8 | grep alive)
    done
    date | mail -s "Server is up and Internet is online" your_email@gmail.com
    
    #loop forever
    while [ "1" == "1" ] 
    do
        itest=$(fping 8.8.8.8 | grep alive)
        #if internet is down
        if [ "$itest" == "" ] 
        then
            #echo Internet is down
            #log time it was found down
            current_time=$(date)
            echo "Internet was found down @ $current_time" >> /mnt/data/Server/internet_log.txt
            #loop until it is back
            while [ "$itest" == "" ] 
            do
                #wait 60 seconds 
                sleep 60
                itest=$(fping 8.8.8.8 | grep alive) # test the internet
            done
            #when it is back
            current_time=$(date)
            echo "Internet is back        @ $current_time" >> /mnt/data/Server/internet_log.txt
            body=$(tail -2 /mnt/data/Server/internet_log.txt)
            echo "$body" | mail -s "Internet is back online" your_email@gmail.com
        fi
        #echo Internet is online
        #wait 60 seconds
        sleep 60
            done
    
  4. তারপরে আমি স্টার্ট-আপটিতে যুক্ত করতে নীচের কমান্ডগুলি চালাচ্ছি:

    sudo update-rc.d testcon defaults
    sudo update-rc.d testcon enable
    
  5. রিবুট


0

আমার Broadcom BCM94331CDচিপ দ্বারা ওয়াই-ফাই সংযোগের এলোমেলো ড্রপিংয়ের মুখোমুখি হয়েছিলাম । ইন্টারনেট ওয়াই-ফাই সংযোগ চালু এবং চালু আছে কিনা তা প্রতি সেকেন্ডে পরীক্ষা করে আমি নীচের বাশ স্ক্রিপ্ট (অসীম লুপ) তৈরি করেছি। এখানে প্রস্তাবিত অন্যান্য কমান্ড লাইন কোনও স্ট্যাটাসের সাথে বন্ধ হওয়ার আগে কমপক্ষে 5 থেকে 10 সেকেন্ড অপেক্ষা করবে ping। মাঝামাঝি সময়ে আমি পাশাপাশি একটি নির্দিষ্ট সমাধানের সন্ধান করছি।

অ্যাসুবুন্টু ফলাফল থেকে, আমি bcmwl-kernel-sourceপ্যাকেজটি আমার ব্যবহার হিসাবে firmware-b43-installerএবং শুদ্ধ করতে হবে b43-fwcutter

তাদের পরামর্শের জন্য প্রত্যেককে ধন্যবাদ (উপরে)।

এই স্ক্রিপ্টটি স্টার্ট-আপ প্রোগ্রামগুলিতে যুক্ত করা দরকার এবং এটির super userপাশাপাশি চালানোর জন্য বিশেষাধিকারের প্রয়োজন নেই ।

#!/bin/bash
#

# Check if Wi-Fi is disabled e.g. 'out of range'
# If so quickly re-enable Wi-Fi
# Due to a problem with Broadcom proprietary driver in package firmware-b43-installer

# Script is part of Start-Up programs
# Stored in /usr/local/bin/
# Infinite loop checking every second if Wi-Fi is up and running

while true; do
  # https://askubuntu.com/questions/27954/how-can-i-check-internet-connectivity-in-a-console
  if [[ $(nmcli -f STATE -t g) != 'connected' ]]; then
    # Disable and Re-Enable Wi-Fi as the Wi-Fi is now 'out of range' (disconnected)
    nmcli radio wifi off
    nmcli radio wifi on
  fi
  sleep 1
done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.