در این مقاله کوتاه نحوه Reboot کردن مودم های UTEL از طریق خط فرمان را بررسی کرده ایم. برای اینکار ما یک اسکریپت ساده با زبان پایتون خواهیم نوشت و آن را به عنوان یک دستور ثبت می کنیم تا از طریق خط فرمان نیز قابل دسترس باشد. و سپس با اجرای دستور زیر می توانیم آن را اجرا کرده و مودم را Reboot کنیم.
ساخت برنامه با پایتون
در این برنامه ما از کتابخانه محبوب و مشهور requests برای ارسال درخواست استفاده کرده ایم. با استفاده از دستور زیر می توانید آن را نصب کنید:
بعد از نصب کتابخانه فوق آن را مانند نمونه زیر در فایل main.py
ایمپورت کنید:
برای نوشتن این برنامه ما به دو آدرس نیاز داریم که یکی برای ارسال درخواست ورود به تنظیمات مودم و دیگری آدرسی که باید درخواست Reboot را به آن ارسال کنیم:
بعد از آن باید جزئیات درخواست را مانند نمونه زیر آماده کنیم:
متغیر اول هدر مربوط به درخواستها را نگه می دارد. متغیر دوم، اطلاعاتی که برای درخواست ورود به تنظیمات مودم باید ارسال کنیم را نگه می دارد. و متغیر سوم هم اطلاعاتی که برای درخواست Reboot باید ارسال کنیم را نگه می دارد.
در نهایت با استفاده از کد زیر می توانیم درخواست خود را ارسال کرده و مودم را ریستارت کنیم:
توجه! برای سادگی کد من هیچ کدی برای کنترل خطاهای احتمالی ننوشتم.
ایجاد دستور خط فرمان
برای ایجاد دستور خط فرمان ابتدا یک فایل به اسم reboot-modem.cmd
در کنار فایل main.py
ایجاد کنید و کد زیر را در آن بنویسید:
در تکه کد فوق ما ابتدا پوشه جاری را که فایل main.py
در آن قرار دارد به عنوان پوشه کاری تنظیم کرده و سپس فایل main.py
را اجرا می کنیم.
حال برای اجرای این فایل از طرق خط فرمان، باید آدرس پوشه ای که فایل reboot-modem.cmd
در آن قرار دارد را به متغیر محیطی PATH اضافه کنید.
How to Add to Windows PATH Environment Variable
بعد از انجام مراحل فوق می توانید با اجرای دستور reboot-modem
از طریق خط فرمان (cmd/terminal) مودم UTEL خود را ریستارت کنید.
سورس کد کامل برنامه پایتون:
import requests loginUrl = 'http://192.168.1.1/login.cgi' rebootUrl = 'http://192.168.1.1/form2Reboot.cgi' headers = { 'Content-Type': "application/x-www-form-urlencoded" } loginData = { 'username': 'admin', 'password': '{your-modem-password}', 'submit.htm^%^3Flogin.htm': 'Send' } rebootData = { 'save': 'Reboot', 'submit.htm^%^3Freboot.htm': 'Send' } # Create new session for requests session = requests.session() # Send login request session.post(loginUrl, loginData, headers) # Send reboot request with same session rebootResult = session.post(rebootUrl, rebootData, headers) print('MODEM RESTARTED')