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