নেটওয়ার্ক ইন্টারফেস আপটাইম সম্পর্কে আমি কীভাবে তথ্য পেতে পারি?


8

আমার একটি উবুন্টু মেশিন এবং একটি দেবিয়ান মেশিন রয়েছে।

উভয়ই আমি দেখতে চাই যে কতক্ষণ একটি নেটওয়ার্ক ইন্টারফেস সংযুক্ত রয়েছে। (এটি, কোনও আইপি পাওয়ার মতো কোনও নেটওয়ার্কের সাথে সংযুক্ত। ইত্যাদি কোনও ক্যাবেলের শারীরিক অবস্থা নয়)। শেষ পরিবর্তন বা অনুরূপ যেকোন কিছু থেকে সেকেন্ডে বা তারিখের সময় + সময়।

এখন পর্যন্ত আমি টাস্কটি করার জন্য একটি ছোট স্ক্রিপ্ট লিখেছি তবে মনে হয় এটি পরীক্ষা করার আরও সাধারণ উপায় থাকা উচিত। একটি প্রোগ্রাম বা / প্রকল্প বা এ জাতীয় কিছু।

আমার লিপি:

#!/bin/bash

if [ -f /etc/os-release ]; then

    if TMP=$(grep -i 'ubuntu' /etc/os-release); then

        # we are on ubuntu
        for i in $(/bin/ls -1 /var/log/syslog* | sort -r); do
                TMP=$(zgrep '(eth0): device state change: ip-config -> activated' "$i" | tail -1 | sed "s/ "$(hostname)"/*/")
        done

        WHEN=$(echo "$TMP" | cut -f1 -d '*')
        SEC=$(echo "$(date +%s) - $(date -d "$WHEN" +%s)" | bc)
        echo "Last link up: $WHEN ($SEC seconds ago)."

    elif TMP=$(grep -i 'debian' /etc/os-release); then

        # we are on debian
        TMP=$(grep 'eth0: link up' /var/log/syslog* | tail -1 | cut -f2- -d':' | sed "s/ "$(uname -n)" kernel:/*/")
        WHEN=$(echo "$TMP" | cut -f1 -d '*')
        SEC=$(echo "$(date +%s) - $(date -d "$WHEN" +%s)" | bc)
        echo "Last link up: $WHEN ($SEC seconds ago)."

    fi

else
    echo "File /etc/os-release not found."
fi

1
শারীরিক কেবল সংযোগ ব্যতীত "কোনও নেটওয়ার্কের সাথে সংযুক্ত হওয়া" বলে কোনও জিনিস নেই। কোনও এনআইসিকে নির্ধারিত আইপি ঠিকানাটি কোনও নেটওয়ার্ক রাষ্ট্রের সূচক নয়। আপনি যদি কোনও এনআইসির জন্য নেটওয়ার্ক সংযোগ নির্ধারণ করতে চান তবে আপনাকে এটি সক্রিয়ভাবে নিরীক্ষণ করতে হবে (উদাহরণস্বরূপ, অন্য টার্গেটে পর্যায়ক্রমিক পিংগুলি প্রেরণ করে বা একটি ধ্রুবক টিসিপি সংযোগ স্থাপন করে)।
ডের হচস্টাপলার

হুম, ঠিক তখনই যখন আমার রাউটারটি পুনরায় চালু হয় (প্রায় 1 মিনিট সময় নেয়), আমার এনআইসির এটির আইপি সরিয়ে ফেলা হয়েছে এবং তারপরে পুনরায় নিযুক্ত করা হয়েছে (বাইট নেটওয়ার্কম্যানেজার)। আমার আইম্যাক একই রকম কিছু করে। রাউটারটি পুনরায় বুট করার পরে আমি যা জানতে চাই তা হ'ল। আমার আইম্যাক এবং লিনাক্সের লগগুলিতে আমি আবার দেখতে পেলাম যে এটি আবার দেখতে পেলাম, তবে আমার ধারণা, নেটওয়ার্কম্যানেজারের মতো কিছু না থাকলেও এটির আইপি নির্ধারিত হবে? এর পরিবর্তে আমার পরিবর্তে নেটওয়ার্কম্যানেজারটি খুব কাছ থেকে নেওয়া উচিত। ধন্যবাদ.
স্টিফান লিথন

1
আমি ধরে নিচ্ছি যে নেটওয়ার্কম্যানেজার (বা অন্য কোনও উপাদান) সক্রিয় সংযোগগুলির উপর নজরদারি করে। যদি কোনও সংযোগ বিচ্ছিন্ন হয়ে যায়, এটি আপনার গেটওয়ে (রাউটার) এর উপলভ্যতা নির্ধারণ করে, এটি একবারে এটি নিচে রয়েছে সনাক্ত করে, এটি ডিএইচসিপি এর মাধ্যমে নির্ধারিত আইপি ঠিকানাটি প্রকাশ করতে পারে। অথবা এটি আবার গেটওয়েটি উপলভ্য হওয়ার জন্য অপেক্ষা করে এবং তারপরে আইপি ঠিকানাটি পুনরায় নিয়োগের জন্য বলে। যে কোনও উপায়ে, এই প্রশ্নটিip monitor (অন্যান্য জিনিসগুলির মধ্যে) ব্যবহারের প্রস্তাব দেয় , এটি এক নজর দেওয়ার মতো হতে পারে।
ডের হচস্টাপলার

1
সম্ভবত স্ক্রিপ্ট স্থাপন /etc/dhcp3/dhclient-enter-hooks.d/করাও একটি বিকল্প হতে পারে। তবে ঠিক কীভাবে এটি কাজ করে তা বলার জন্য আমি পর্যাপ্ত তথ্য খুঁজে পাচ্ছি না।
ডের হচস্টাপলার

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

উত্তর:


1

ইন্টারফেস শুরু হওয়ার সময় লিনাক্স কার্নেলটি ট্র্যাক করে না।

এর মধ্যে struct net_deviceএমন কোনও ক্ষেত্র নেই যা jiffiesইন্টারফেস শুরু হওয়ার সময় মান রাখে ।

আপনি পরিচালনা করতে পারেন সর্বোত্তম ব্যবহারকারীর স্পেস স্ক্রিপ্ট এবং লগগুলি থেকে কিছু অনুমিত পদ্ধতি।


1

dhclientনেটওয়ার্কে পুনরায় সংযোগ করার সময় আমার মেশিনটি নেটওয়ার্কম্যানেজার দ্বারা পুনরায় চালু হয়। সুতরাং আপনি কি dhclientপ্রক্রিয়া শুরু করার সময় ব্যবহার করতে পারেন ?

ps -o start,cmd $(pgrep dhclient)

0

এখানে আমার রূপটি (আপনার সাথে খুব মিল):

~ # expr $(echo $(date +%s) - $(date -d "`grep 'eth0: leased' /var/log/messages | tail -1 | awk '{print $1, $2, $3}'`" +%s))
1116
~ #

1116 - আইপি ইজারা দেওয়ার পরে সেকেন্ড।


0

এটি আপনি যা চান সেকেন্ডে তা করা উচিত:

#!/bin/bash
STARTTIME=`date +%s`
GATEWAY=`ip r s | grep default | cut -d' ' -f3`
INTERVAL=1
while ping -c 1 -W 1 ${GATEWAY} >/dev/null 2>&1; 
do
  awk -v STIME="$STARTTIME" 'BEGIN {
   DTIME=systime()-STIME;
   printf "Seconds of uptime since %s: %d\n",
     strftime("%a %b %e %H:%M:%S %Z %Y",STIME),
     DTIME; }';
  sleep $INTERVAL;
done

echo "HOST DROPPED!"

কোন ফলাফল:

user@host $ sh test-script.sh
Seconds of uptime since Sat Nov 15 01:14:26 EST 2014: 0
Seconds of uptime since Sat Nov 15 01:14:26 EST 2014: 1
Seconds of uptime since Sat Nov 15 01:14:26 EST 2014: 2
Seconds of uptime since Sat Nov 15 01:14:26 EST 2014: 3
Seconds of uptime since Sat Nov 15 01:14:26 EST 2014: 4
HOST DROPPED!

থিওরি: একটি টাইমস্ট্যাম্প পান STARTTIME, তারপরে INTERVALগেটওয়ে (দিয়ে ip route show) এখনও চলছে কিনা তা পরীক্ষা করে দেখুন , যদি তাই হয় তবে মূল টাইপস্ট্যাম্পটি মূল এবং মুদ্রণ থেকে বিয়োগ করুন। যদি তা না হয় তবে প্রস্থান করুন এবং হোস্টটি তার সংযোগটি বাদ দিয়েছে তা নির্দেশ করুন। প্রতিটি কমান্ড বিকল্পের ব্যাখ্যার জন্য ম্যান্যাপগুলি দেখুন। আপনি যদি প্রতি সেকেন্ডে আউটপুট না চান, বাড়ান INTERVAL

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.