در این مقاله کوتاه نحوه 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')

 

Leave a Reply

Your email address will not be published.