با استفاده از ماژول subprocess و PIPE یک اسکریپت پایتون بنویسید که دستور uname -a را روی سیستم/دستگاه تعبیه‌شده اجرا کند، خروجی و خطا را گرفته و هر دو را چاپ و در فایل log.txt ذخیره کند.

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

0.0

برای حل این مسئله از subprocess.Popen یا subprocess.run استفاده کنید و پارامترهای stdout=subprocess.PIPE و stderr=subprocess.PIPE را تعیین کنید؛ سپس با متد communicate() خروجی و خطا را به‌صورت بایت دریافت و با decode به رشته تبدیل کنید و هم در کنسول چاپ و هم در فایل log.txt بنویسید. به‌عنوان نکته ایمنی از ارسال آرایهٔ آرگومان‌ها (مثلاً ['uname','-a']) به‌جای shell=True استفاده کنید، برای جلوگیری از بن‌بست timeout تعیین کنید و با try/except خطاها را هندل کنید — این روش در برنامه‌نویسی سیستم و پروژه‌های IoT برای جمع‌آوری اطلاعات وضعیت دستگاه بسیار مفید است.

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

نکته امنیتی: از آرایهٔ آرگومان استفاده کنید و shell=False را فراموش نکنید تا از خطر injection جلوگیری شود. هنگام استفاده از subprocess.run یا Popen، stdout و stderr را PIPE کنید و با تابع communicate() خروجی را بگیرید و decode کنید. هم خروجی stdout و هم خطای stderr را چاپ کنید و هم در فایل log.txt بنویسید تا همواره لاگ مناسبی داشته باشید. برای پایداری در پروژه‌های IoT، زمان‌بندی timeout مناسب و مدیریت استثناها با try/except را فراموش نکنید.

گزارش

1 پاسخ

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

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