یک اسکریپت بش بنویسید که با استفاده از netcat بهعنوان سرور TCP روی پورت 12345 گوش دهد، پیامهای دریافتی را همراه با مهرزمان (timestamp) در فایل لاگ ذخیره کند و همان پیام را به کلاینت بازگرداند (echo).
4.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:25 0.0
برای حل این مسئله میتوانید از ابزار netcat (nc یا ncat) برای گوش کردن روی پورت استفاده کنید (گزینههای متداول: -l برای listen، -k برای نگه داشتن سرویس برای چند اتصال و -p برای مشخص کردن پورت بسته به نسخه). برای هر پیام دریافتی از read در یک حلقه استفاده کنید، با date مهرزمان بسازید و با عملگر >> در فایل لاگ بنویسید و سپس همان خط را به خروجی برگردانید تا به کلاینت ارسال شود. نکات: از IFS= read -r برای خواندن خطوط با فضای سفید محافظتشده استفاده کنید، قبل از اجرای اسکریپت وجود netcat و دسترسی به پورت را بررسی کنید و رفتار گزینهها را در نسخهی netcat سیستم خود با man nc بازبینی کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ مهم اینکه رفتار گزینههای nc برای نسخههای مختلف متفاوت است؛ برخی نسخهها فقط با -l یا -k کار میکنند و در نتیجه لازم است نسخهٔ nc سیستم خود را با man nc بررسی کنید. برای پایداری سرویس طولانیمدت، استفاده از حلقهای که هر اتصال را جداگانه پردازش میکند و لاگبرداری با timestamp را در فایل انجام میدهد بهتر است و شاید بخواهید سرویس را به عنوان یک daemon یا systemd واحد راهاندازی کنید. همچنین هنگام خواندن خطوط از ورودی از IFS= read -r استفاده کنید تا فضاهای داخلی خط به درستی حفظ شوند و از بروز مشکلات با newlineها جلوگیری شود. در نهایت مطمئن شوید که کلاینت پیام را بهصورت line-by-line دریافت کند تا همان خط به کلاینت بازگردد و با newline پایان یابد.
گزارش