আমি কীভাবে প্রোগ্রামে এবং নির্ভরযোগ্যভাবে এয়ারপোর্টের ইন্টারফেসের নাম পাব?


5

স্ক্রিপ্টে আমার বিমানবন্দরের যে কোনও নাম, এনএন, এন ১, এনএন, এন দরকার।

আমি কীভাবে এটি নির্ভরযোগ্যভাবে পেতে পারি?

আমি যা একসাথে রেখেছি তা এখানে, তবে এটি "টেক্সট পার্সিং" হিসাবে কুরুচিপূর্ণ এবং ভঙ্গুর দেখাচ্ছে:

airport_hardware_name='Hardware Port: Wi-Fi'
networksetup -listallhardwareports | awk -v p="$airport_hardware_name" '$0 ~ p { getline; print $2; }'

উত্তর:


5

আপনার যদি ওএস এক্স এর পুরানো সংস্করণগুলি সমর্থন করার প্রয়োজন হয়, তবে Wi-Fi নেটওয়ার্ক পরিষেবাটি 10.6 এবং এর আগে বিমানবন্দর বলা হত।

networksetup -listallhardwareports | awk '/^Hardware Port: (Wi-Fi|AirPort)$/{getline;print $2}'

আপনি এটি ব্যবহার করতে পারেন -listnetworkserviceorder:

networksetup -listnetworkserviceorder | sed -En 's/^\(Hardware Port: (Wi-Fi|AirPort), Device: (en.)\)$/\2/p'

বা পড়ুন /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist:

ruby -e 'require "plist";puts Plist::parse_xml("/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist")["Interfaces"].select{|i|i["SCNetworkInterfaceType"]=="IEEE80211"}[0]["BSD Name"]'


স্নো চিতাবাঘের কম্পাটের জন্য উজ্জীবিত! চমৎকার স্পর্শ!
রোবটিনোসিনো 15

→ লরি: ওয়্যারলেস ইন্টারফেস বন্ধ থাকলে 2 য় সংস্করণ কাজ করে না।
ড্যান

@ ড্যানিয়েল অজুয়েলোস আপনার কী বোঝাতে চাইছেন যখন সিস্টেম পছন্দগুলি থেকে Wi-Fi বন্ধ করা হয়? আমি Wi-Fi বন্ধ করে আবার চালু করার পরেও এটি আমার জন্য কাজ করেছিল।
ল্রি

1
Uri লৌরি: আমি বোঝাতে চাইছি যখন আমি একটি উত্সর্গীকৃত অবস্থানটি ব্যবহার করি যেখানে কেবলমাত্র ইথারনেট থাকে এবং সংজ্ঞায়িত থাকে। এটি এমন একটি কনফিগারেশন যা আমি প্রতিদিন নেটওয়ার্ক সমস্যার বিশ্লেষণ করতে ব্যবহার করি।
ডান


1

লৌরির থিমটিতে বাজানো যে অ্যাপল ভবিষ্যতের কোনও সময় ওয়াই-ফাই ডিভাইসের নাম পরিবর্তন করতে পারে:

for d in `networksetup -listallhardwareports | awk '/^Device:/{print $2}'`; do
  networksetup -getairportpower $d > /dev/null 2>&1 && echo "Wi-Fi Device: ${d}"
done

যেহেতু 'নেটওয়ার্কসেটআপআপ-বিটায়ারপোর্টপাওয়ার ডেভ' একটি শূন্য -হীন রিটার্ন মান দেয় যখন ডেভ এয়ারপোর্ট ডিভাইস নয়, আমরা কাজ করে এমন একটি (গুলি) খুঁজে পেতে পারি।


এটি এখন অবধি সেরা .. অন্তর্নির্মিত অতিরিক্ত নির্ভরযোগ্যতা !! দুর্দান্ত স্টাফ ..
রোবটিনোসিনো

1

সম্পূর্ণরূপে উত্তরগুলি গোল করে দেওয়া (অন্য উত্তরগুলির সাথে কিছু ভুল আছে তা বোঝানোর জন্য নয়, তবে এটি করার আরও একটি উপায় রয়েছে তা দেখানোর জন্য), আমি এটিকে প্রকাশ করব:

প্রাপ্ত airportকমান্ডটি ব্যবহার করুন :

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport

যা কমপক্ষে 10.6 থেকে রয়েছে। (আমি /usr/local/bin/যখনই নতুন ম্যাক সেটআপ করছি তখন আমি সর্বদা এটির সাথে লিঙ্ক করি )।

airportকমান্ডটির একটি সুবিধা হ'ল ইন্টারফেসটি কী তা আপনাকে জানতে হবে না কারণ:

"যদি কোনও ইন্টারফেস নির্দিষ্ট না করা থাকে, তবে বিমানবন্দরটি সিস্টেমে প্রথম এয়ারপোর্ট ইন্টারফেস ব্যবহার করবে।"

অতএব, আমি যদি এই আদেশটি চালাই:

airport prefs 2>&1

আমি এই আউটপুট পেতে:

AirPort preferences for en1:

DisconnectOnLogout=NO
Unable to retrieve JoinMode
Unable to retrieve JoinModeFallback
RememberRecentNetworks=NO
RequireAdminIBSS=NO
RequireAdminNetworkChange=NO
RequireAdminPowerToggle=NO
WoWEnabled=YES

যার অর্থ হ'ল আমি প্রথম লাইনে সর্বশেষ শব্দটি মাইনাস কোলনের সন্ধান করে পোর্ট / ডিভাইসের নাম পেতে পারি।

airport prefs 2>&1 | awk -F' ' '/for/{print $NF}' | tr -d ':'

0

স্রেফ দুর্ঘটনাক্রমে এটি করার অন্য একটি উপায় খুঁজে পেয়েছি:

networksetup -setairportpower enX off 2>&1 | awk -F' ' '/:/{print $NF}'

কীভাবে / কেন এটি কাজ করে:

networksetup -setairportpower enX off

এই ফলাফল দেয়:

এনএক্স কোনও Wi-Fi ইন্টারফেস নয়।

একমাত্র বিমানবন্দর ইন্টারফেস বন্ধ করে পাওয়া গেছে: এন 1

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

(10.8.3 এ কাজ করে))

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