ip a | grep -Eq ': eth0:.*state UP' || _do_your_thing
সুতরাং এখানে আমরা grep
সর্বব্যাপী ip
সরঞ্জামটির stdout
একটি রেখার জন্য যা আমাদের আগ্রহের ইন্টারফেস এবং "স্টেট ইউপি" বাক্যাংশ উভয়ই রাখে (ন্যায়বিচারের চেয়ে আরও কিছুটা সুনির্দিষ্টতার প্রয়োজনীয়তার দিকে নির্দেশ করার জন্য @ লিকেনস্টেইনকে ধন্যবাদ UP
)। আমরা যুক্তিটিকে a
সংক্ষিপ্ত ফর্ম হিসাবে ব্যবহার করি address
এবং এটি সিস্টেমে সমস্ত কনফিগার করা নেটওয়ার্ক কার্ডের তালিকা পাওয়ার জন্য যথেষ্ট।
ব্যবহার করার একটি সুবিধা ip
হ'ল এটি সত্যই সর্বত্র পাওয়া উচিত - উদাহরণস্বরূপ, আমি সাধারণত আমার অ্যান্ড্রয়েড ফোনের নেটওয়ার্ক ডিভাইসগুলি কনফিগার করি।
:colons
আংশিক মিল এড়াতে ব্যবহার করা হয় - এই ভাবে আমরা জন্য একটি ম্যাচ গ্যারান্টি eth0
হিসাবে একটি অন্যথায় সম্ভব বিরোধিতা someothereth0
বা eth007
।
আমাকে সঠিকতার দিকে ঠেলে দেওয়ার এবং আমার সমাধানের ব্যাখ্যা দেওয়ার জন্য @ রাফেলআহরেন্সকে ধন্যবাদ জানাই।
সম্পাদনা করুন:
বর্তমান প্রয়োজনীয়তাগুলি পরিচালনা করতে আপনি করতে পারেন:
ip a | sed -rn '/: '"$if"':.*state UP/{N;N;s/.*inet (\S*).*/\1/p}'
উপরে শুধুমাত্র কোন CIDR IP ঠিকানা প্রিন্ট হবে যদি আপনার টার্গেট $if
হল ইউপি, প্লাগ ইন, এবং এক হয়েছে। আইপিভি 6-এর জন্য সমাধানটি কেবলমাত্র ছোটখাটো পরিবর্তন সহ সাধারণ।
আপনি যদি না চান তবে sed
আপনি অন্যের সাথে একই রকম ফলাফল অর্জন করতে এবং প্রথমটিতে |pipe ... grep
একটি -A
প্রসঙ্গ বিকল্প যুক্ত করতে grep
পারেন - তবে আমি পছন্দ করি sed
।
cat /sys/class/net/ | grep eth0
আপনাকে ইজিলি পার্সেবল ডেটা দেওয়া উচিত। আপনিও করতে পারেনsudo ethtool eth0 | grep Link