یک اسکریپت Bash بنویسید که یک فایل لاگ متنی را خوانده و یک گزارش خلاصه تولید کند که شامل شمارش هر سطح لاگ (ERROR، WARNING، INFO)، پنج پیام خطای پرتکرار برتر و تعداد آدرس‌های IP یکتا باشد.

7.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:36

0.0

برای حل از ابزارهای خط فرمان ساده مانند awk برای استخراج ستون‌ها، grep برای فیلتر کردن، sort و uniq -c برای شمارش و head برای محدود کردن استفاده کنید؛ اسکریپت باید نام فایل لاگ را به‌عنوان آرگومان بگیرد و اول وجود یا خوانا بودن فایل را بررسی کند. برای شمارش سطوح لاگ از grep -c یا awk بهره ببرید، پیام‌های خطا را با استخراج قسمت پیام (پس از کلیدواژه ERROR) و سپس sort | uniq -c | sort -nr | head -5 پیدا کنید، و برای آدرس‌های IP از یک regex ساده (مثلاً grep -oE '\b([0-9]{1,3}\.){3}[0-9]{1,3}\b') و سپس sort -u یا uniq برای شمارش یکتا استفاده نمایید؛ نکات مفید: ورودی‌ها را اعتبارسنجی کنید، خروجی را خوانا فرمت کنید و از پایپ‌ها برای کارایی روی فایل‌های بزرگ بهره ببرید.

توسط پژوهشگر در 221 روز قبل ساعت 01:36
دسته بندی ها: Bash Scripting Bash Scripting for beginner
reyhaneh در 221 روز قبل ساعت 12:39

برای اطمینان از عملکرد با فایل‌های بزرگ، از خواندن خط به خط (streaming) و بررسی وجود و قابل خواندن بودن فایل ورودی قبل از اجرای گزارش استفاده کنید. سطح‌های لاگ را با awk یا grep -i شمارش کرده و پیام‌های ERROR را پس از کلیدواژه ERROR استخراج کنید، سپس با sort -nr | head -5 پرتکرارترین پنج پیام را نشان دهید و آدرس‌های IP یکتا را با یک regex ساده بشمارید. بهینه‌سازی‌های کار با لاگ‌های طولانی با استفاده از pipeline‌های بدون بارگذاری کامل در حافظه و سازگاری با محیط‌های مختلف (GNU vs POSIX) را در نظر بگیرید. همچنین مستندسازی ساده‌ای برای فرمت لاگ و فرضیات (مثلاً فرمت ستون‌ها) می‌تواند از بروز خطا جلوگیری کند.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری