یک اسکریپت پایتون بنویسید که با استفاده از 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 استفاده کنید تا ایمنی بالاتر باشد، و مطمئن شوید اسکریپت با دسترسی لازم اجرا میشود (برای دسترسی به اطلاعات سختافزاری ممکن است نیاز به مجوز روت باشد).
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
این رویکرد با استفاده از subprocess.check_call و هدایت stdout به یک فایل باینری در /tmp/usb_devices.log امن است، زیرا خروجی lsusb به صورت بایت نوشته میشود. از پاس دادن آرگومانها به صورت لیست (['lsusb']) به جای shell=True استفاده کنید تا ایمنی بیشتری داشته باشید. در صورت بروز خطا، با گرفتن استثنای subprocess.CalledProcessError پیامی مناسب چاپ کنید و فایل لاگ را با استفاده از یک context manager ببندید تا منابع پاک شوند. همچنین ممکن است برای دسترسی به اطلاعات سختافزاری به مجوزهای روت نیاز باشد.
گزارش