حل مشکل ریستارت مودم ایرانسل با پایتون

ادریس رنجبر

2020-04-14

سلام من ادریسم مثل قبلنا با این تفاوت که امروز میخوام یه آموزش متنی راجع به ریستارت مودم ایرانسل با پایتون براتون بزارم. در واقع استودیومون آماده نبود (منظورم همون لامپ و چیزه دیگه) و خلاصه گفتم عیب نداره که میام و متنی براتون از سیر تا پیازشو مینویسم. مثل قبلنا اگه یادتون باشه.

خب مشکل چی بود و چه جوری به کمک برنامه نویسی مثل یه گیک خفن حلش کردیم!؟ مشکل این بود که من نیاز داشتم روزی دو یا سه بار مودم ایرانسلمو ریستارت کنم و خب اولا دستی این کار رو کردن خیلی مسخرست چون باید از جات بلند شیُ چند قدم راه بری تا برسی به مودمو و اوووه تا برسی و ریستارت کنی و برگردی کلی شده 🙂 و خب اصلا حوصله ی اینکارو نداریم و مهم تر از اون نیازی هم نیست. اومدم یه اسکریپت کوچولو نوشتم که با یه دستور ساده کار ریستارت مودم ایرانسل منو برام انجام میده.

ریستارت مودم ایرانسل با پایتون

و اما چه جوریش:
خب خیلی ساده یه فایل پایتون تو به جای مناسب تو سیستمم ساختم و یکم فکر کردم. چی میخوایم؟ یه کتابخونه که به ما این امکان رو بده که با مرورگرمون کار بکنیم. چی بهتر از selenium که کار کردن باهاش هم خیلی سادست هم فانه. اولش باید نصبش می کردم چون رو سیستمم ندارم. اما از اونجایی که ما پایتون بازیم و آره دیگه pip در خدمتمونه میام و دستور زیر رو میزنیم و تمام.

pip3 install selenium

بعدش نوبت ایمپورت کردنش داخل اسکریپتمونه. خب برای این کار هم می نویسیم:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

از اونجایی که بعدا لازممون میشه با کتابخونه ی زمان هم کار بکنیم پس این خط رو هم می نویسیم:

from time import sleep

خب حالا میایم و کتابخونه ی سیستم عاملو وارد می کنیم تا بتونیم موقعیت جایی که اسکریپت داره اجرا میشه رو بگیریم چون بعدا برای بدست آوردن آدرس فایل درایور کروم بدردمون میخوره. پس می نویسیم:

import os

بعدش دیگه باید به سلنیوم دستور بدیم یه مرورگر برامون باز کنه و عین یه ربات خوب کار ها رو به ترتیب انجام بده.

current_path = os.getcwd()
browser = webdriver.Chrome(f"{current_path}/chromedriver")

خب ما تا الان به درایور مرورگر کروم تو دایرکتوری اسکریپتمون دارم (فایلشو میزارم) با استفاده از اون میایم و سه صفحه ی وب رو باز میکنیم و توی اجزا می چرخیم. اولش باید لاگین کنیم به پنل مودم ایرانسل که روی آی پی ۱۹۲.۱۶۸.۱.۱ هستش و بعد نام کاربری و رمز عبور رو که پیش فرض ادمین ادمین هستش وارد کنیم (کاری کنیم که خودکار وارد شه) و بعد دکمه ی ریبوت رو بزنیم و تمام.

خب یه سری متغیر تعریف می کنیم که کدمون تمیز تر بشه و بقیه هم بتونن به راحتی از این اسکریپت استفاده کنن.

# Initializing variables
url = "http://192.168.1.1"
username = "admin"
password = "admin"

حالا سایت رو (ای پی مودم) باز می کنیم و به تگ فریمی که توش هست سوپیچ می کنیم ( تا بتونیم به المان هاش دسترسی پیدا کنیم).

browser.get(url)
browser.switch_to.frame(browser.find_element_by_id('frame_menu'))

حالا میرسیم به قسمت جال ماجرا یعنی پیدا کردن فیلد نام کاربری و رمز عبور و فرستادن اطلاعات به اون فیلدا. کار آسونیه. اول از همه از طریق ابزار inspect element مرورگر رفتم و xpath اون فیلد ها رو در آوردم و بعد به مرورگر دستور میدیم که بره و اطلاعات رو به اون فیلد ها برسونه و بعد اینتر رو بزنه (لاگین کنه)

username_txt = browser.find_element_by_xpath("//*[@id='login_center_box']/div[1]/input")
password_txt = browser.find_element_by_xpath("//*[@id='login_center_box']/div[2]/input")
username_txt.send_keys(username)
password_txt.send_keys(password)
password_txt.send_keys(Keys.RETURN)

از اونجایی که ممکنه یک الی سه یا چهار ثانیه طول بده ما محض اطمینان میگیم ۵ ثانیه صبر کن بعد ادامه کد ها رو برو.

sleep(5)

خب حالا که لاگین شدیم و توی پنل میدیریت مودممون هستیم کافیه بیایم و روی فریم منوی بالای پنل سوئیچ کنیم و روی دکمه ی ریبوتش کلیک کنیم بعد می پرسه مطمپنی یا همچنین چیزی و ما هم میگیم آررره چرا که نه. و تمام.

browser.switch_to.frame(browser.find_element_by_xpath('//*[@id="index_frameset"]/frame[1]'))
browser.find_element_by_xpath("/html/body/img[5]").click()
print("Restarting Process started...")
alert = browser.switch_to_alert()
alert.accept()
sleep(10)
browser.close()
print("Done!")

از اونجایی که ممکنه بخوای کد ها رو کپی و پیست کنی برای خودت؛ کاملشم اینجا میزارم که راه دست باشه 🙂 .

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
import os

current_path = os.getcwd()
browser = webdriver.Chrome(f"{current_path}/chromedriver")

# Initializing variables
url = "http://192.168.1.1"
username = "admin"
password = "admin"

browser.get(url)
browser.switch_to.frame(browser.find_element_by_id('frame_menu'))
username_txt = browser.find_element_by_xpath("//*[@id='login_center_box']/div[1]/input")
password_txt = browser.find_element_by_xpath("//*[@id='login_center_box']/div[2]/input")
username_txt.send_keys(username)
password_txt.send_keys(password)
password_txt.send_keys(Keys.RETURN)
sleep(5)
browser.switch_to.frame(browser.find_element_by_xpath('//*[@id="index_frameset"]/frame[1]'))
browser.find_element_by_xpath("/html/body/img[5]").click()
print("Restarting Process started...")
alert = browser.switch_to_alert()
alert.accept()
sleep(10)
browser.close()
print("Done!")

امیدوارم این آموزش «ریستارت مودم ایرانسل با پایتون» براتون مفید واقع بشه و ازش لذت ببرین. اگر خواستین میتونید از قسمت حمایت مالی از آموزش های رایگان حمایت بکنید. موفق و پیروز باشید.

راستی اگه سوال داشتید زیر همین پست یا هر پست مرتبط دیگه بپرسید که بقیه هم ببینن و شاید پاسخ پرسش اونها هم باشه.

لینک سورس پروژه در گیت هاب



دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *