আমি এটা করতে চাই fpingএবং awk। দুর্ভাগ্যবশত, awk'গুলি printfবিন্দু দিয়ে প্যাড পারব না, শুধুমাত্র সঙ্গে স্পেস বা শূণ্যসমূহ তাই আমি একটি ফাংশন লিখতে হবে:
list=(kali surya indra ganesh durga hanuman nonexistent)
fping "${list[@]}" 2>&1 |
sort -k3 |
awk -F'[: ]' 'BEGIN { fmt="(%02d) %s CONNECTION %s\n"};
function dotpad(s,maxlen, l,c,pads) {
l = maxlen - length(s);
pads = "";
for (c=0;c<l;c++) {pads=pads"."};
return s " " pads
};
/alive$/ { printf fmt, ++i, dotpad($1,19), "OK" };
/unreachable$/ { printf fmt, ++i, dotpad($1,19), "FAIL" }
/not known$/ { printf fmt, ++i, dotpad($1,19), "IMPOSSIBLE" } '
(01) durga .............. CONNECTION OK
(02) ganesh ............. CONNECTION OK
(03) indra .............. CONNECTION OK
(04) kali ............... CONNECTION OK
(05) nonexistent ........ CONNECTION IMPOSSIBLE
(06) hanuman ............ CONNECTION FAIL
(07) surya .............. CONNECTION FAIL
আমি প্রথম বন্ধনীগুলিতে শূন্য-প্যাডযুক্ত 2-সংখ্যার সংখ্যা ব্যবহার করছি যাতে 10-99 হোস্ট থাকলে সেখানে ফর্ম্যাটটি $listস্ক্রু না হয়ে যায় (100+ এখনও এটি স্ক্রু করবে)। বিকল্প একটি পর্যন্ত মুদ্রণ বিলম্ব হবে END {}ব্লক, এবং / regexp-মিলের জন্য / তিন অ্যারে এক, যেমন মধ্যে মাত্র সন্নিবেশ হোস্টনাম ok, fail, unknown। বা কেবলমাত্র একটি সহযোগী অ্যারে (উদাঃ hosts[hostname]="OK")। তারপরে আপনি লাইনগুলির সংখ্যা গণনা করতে পারেন এবং লাইন-কাউন্টার ক্ষেত্রটি কত প্রশস্ত হওয়া উচিত তা স্থির করতে এটি ব্যবহার করতে পারেন।
আমি অজানা হোস্ট ( CONNECTION IMPOSSIBLE) এবং অ্যাক্সেস অযোগ্য হোস্ট ( CONNECTION FAIL) এর মধ্যে আউটপুট আলাদা করার সিদ্ধান্ত নিয়েছি ।
sort -k3ঐচ্ছিক, এটা ঠিক গ্রুপ দ্বারা আউটপুট fpingফলাফলের ( "হোস্ট-নেম জীবিত", "হোস্ট-নেম পাওয়া যাচ্ছে না" বা "হোস্টনাম: নাম বা জানা যায় না সেবা")। ছাড়া sort, অজানা হোস্টগুলি সর্বদা আউটপুটে প্রদর্শিত হবে। হোস্টনাম sortঅনুসারে -k3উইল ছাড়াই কেবল সরল ।
$TOTAL (length) - $MASHINE (length)বিন্দুর সংখ্যা পেতে আপনি একটি গণনা করতে পারেন। তারপরেprintf '.%.s' {1..$DOTS}প্রতিটি লুপের পুনরাবৃত্তিতে ব্যবহার করুন । এরকম কিছু আমার মনে হয় কাজ করবে।