یک اسکریپت پایتون بنویسید که با استفاده از subprocess.check_call فرمان "lsusb" را اجرا کند تا دستگاه‌های USB متصل را بررسی کرده و خروجی را در فایل /tmp/usb_devices.log ذخیره کند و در صورت شکست اجرای فرمان، پیام خطا را چاپ کند.

2.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 03:12

0.0

برای حل این مسئله از ماژول subprocess و تابع check_call استفاده کنید: فایل لاگ را با حالت باینری باز کرده و خروجی استاندارد (stdout) را به آن هدایت کنید (مثلاً subprocess.check_call(['lsusb'], stdout=log_file)). اجرای فرمان را در یک بلوک try/except قرار دهید تا در صورت بروز subprocess.CalledProcessError پیغام مناسبی نمایش داده شود. نکته‌ها: از عبور دادن لیست آرگومان‌ها به جای shell=True استفاده کنید تا ایمنی بالاتر باشد، و مطمئن شوید اسکریپت با دسترسی لازم اجرا می‌شود (برای دسترسی به اطلاعات سخت‌افزاری ممکن است نیاز به مجوز روت باشد).

توسط پژوهشگر در 220 روز قبل ساعت 03:12
دسته بندی ها: Python Python for beginner
sara در 220 روز قبل ساعت 07:10

این رویکرد با استفاده از subprocess.check_call و هدایت stdout به یک فایل باینری در /tmp/usb_devices.log امن است، زیرا خروجی lsusb به صورت بایت نوشته می‌شود. از پاس دادن آرگومان‌ها به صورت لیست (['lsusb']) به جای shell=True استفاده کنید تا ایمنی بیشتری داشته باشید. در صورت بروز خطا، با گرفتن استثنای subprocess.CalledProcessError پیامی مناسب چاپ کنید و فایل لاگ را با استفاده از یک context manager ببندید تا منابع پاک شوند. همچنین ممکن است برای دسترسی به اطلاعات سخت‌افزاری به مجوزهای روت نیاز باشد.

گزارش

1 پاسخ

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

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