با استفاده از ماژول 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 برای جمعآوری اطلاعات وضعیت دستگاه بسیار مفید است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته امنیتی: از آرایهٔ آرگومان استفاده کنید و shell=False را فراموش نکنید تا از خطر injection جلوگیری شود. هنگام استفاده از subprocess.run یا Popen، stdout و stderr را PIPE کنید و با تابع communicate() خروجی را بگیرید و decode کنید. هم خروجی stdout و هم خطای stderr را چاپ کنید و هم در فایل log.txt بنویسید تا همواره لاگ مناسبی داشته باشید. برای پایداری در پروژههای IoT، زمانبندی timeout مناسب و مدیریت استثناها با try/except را فراموش نکنید.
گزارش