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