سلام به همگی، ببخشید یک مدت به دلیل امتحانات پایان ترم فعال نبودم، ولی امروز اومدم با یه برنامه کاربردی دیگه. این برنامه بیشتر به درد کسایی می خوره که میخوان یک cmd با شکل و قیافه جدید و متفاوت داشته باشند.
ماژول های مورد نیاز برای این جلسه:
1- subprocess 2- pyfiglet 3- termcolor 4- getpass 5- os
قدم اول برای ساختن ترمینال, ساختن یک محیط برای گرفتن دستوره. این قسمت رو به این روش پیاده سازی می کنیم:
from termcolor import colored,cprint from os import getcwd from subprocess import check_output prompt=colored(getcwd()+" $","green") while 1: cmd=input(prompt) output=check_output(cmd.split()).decode('utf-8',errors='backslashreplace') print(output)
این برنامه ورودی ای از کاربر به عنوان دستور گرفته و آن را اجرا کرده، نتیجه را برمیگرداند.
قدم دوم: می توانیم یک پسورد برای ترمینال خود بگذاریم تا هر کسی دسترسی نداشته باشد.
پیاده سازی این بخش به کمک ماژول getpass و تابع getpass آن انجام می شود. این تایع مانند input عمل می کند اما ورودی که در آن تایپ می شود قابل مشاهده نیست. این کدها را قبل از تعریف prompt و بعد از ایمپورت ها قرار دهید.
from getpass import getpass passwd=getpass("Password: >> ") original_passwd="*********" if passwd is original_passwd: cprint("Accepted! :-)","light_yellow") else: cprint("Access Denied! :-(","light_red") raise SystemExit(7)
روش کار این کد بدین شکل است: اول پسورد را گرفته و با پسورد اصلی مقایسه میکند. اگر درست بود اجازه ورود را می دهد. در غیر این صورت برنامه را بسته و پیغام دسترسی غیرمجاز را نمایش می دهد. و اجازه تایپ پسورد دوباره را نمیدهد.
قدم سوم: اضافه کردن بنر به بالای کد برای زیبایی بیشتر:
برای این کار باید از کتابخانه pyfiglet استفاده کرد. و برای نشان دادن حالت بنر از فونتی مخصوص بنر استفاده می کنیم. برای اضافه کردن این بخش به قبل از گرفتن پسورد بروید و کد زیر را تایپ کنید.
from pyfiglet import figlet_format banner= colored(figlet_format("Terminal","banner3-D"),"light_cyan" ) print(banner.center(100," "))
قدم آخر: اضافه کردن دستورات خروج به برنامه ترمینال.
در این بخش به هیچ ماژولی نیاز نداریم و فقط باید کار با متد any را بلد باشید. برای اضافه کردن این کد به حلقه وایل و خط قبل از check output بروید و کد زیر را وارد کنید:
exit_cmd=["exit","quit","logout","kick"] if any(cmd==qcm for qcm in exit_cmd): cprint("Good bye!","light_blue") break
تا مطلب بعدی خداحافظ.