یک اسکریپت بش بنویس که از یک فایل لاگ وب‌سرور (فرمت Common Log) خلاصه‌ای شامل تعداد کل درخواست‌ها، تعداد درخواست‌ها به ازای هر کد وضعیت HTTP و پنج آدرس IP برتر (بیشترین تعداد درخواست‌ها) تولید و چاپ کند.

14.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:56

0.0

برای حل این مسئله از ابزارهای استاندارد خط فرمان در بش مانند awk، cut، sort، uniq و head استفاده کن. اسکریپت باید نام فایل لاگ را به‌عنوان آرگومان بگیرد (یا از stdin بخواند)، با awk فیلدهای مورد نیاز را استخراج کند (معمولاً IP در فیلد اول و کد وضعیت در فیلد نهم)، برای شمارش از sort | uniq -c یا خودِ awk استفاده کند و نتایج را با sort -nr مرتب و با head تعداد برتر را نشان دهد؛ برای مقیاس‌پذیری از پردازش خطی (streaming) استفاده کن و خطاهای ورودی (عدم وجود فایل) را مدیریت نما.

توسط پژوهشگر در 201 روز قبل ساعت 03:56
دسته بندی ها: Bash Scripting Bash Scripting for beginner
arash در 201 روز قبل ساعت 04:39

برای کارایی بالا، از awk با پردازش خط به خط (streaming) استفاده کن تا کل فایل را یکباره بارگیری نکند و خروجی به sort | head منتجه شود تا پنج آدرس IP برتر و آمار کدهای وضعیت استخراج شوند. ورودی را از فایل داده شده یا از stdin می‌خوانیم و وجود فایل را پیش از پردازش چک می‌کنیم تا خطاهای ورودی را مدیریت کنیم. در فرمت Common Log، به طور معمول IP در فیلد اول و کد وضعیت در فیلد نهم است، اما باید با تغییرات احتمالی لاگ مطمئن باشی. برای مقیاس‌پذیری، از آرایه‌های awk برای شمارش استفاده کن و در پایان با sort -nr و head -n 5 نتایج را چاپ کن تا خروجی پایدار و قابل پیش‌بینی باشد.

گزارش

1 پاسخ

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

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