Skip to content

Instantly share code, notes, and snippets.

@thewh1teagle
Created December 17, 2020 19:54
Show Gist options
  • Select an option

  • Save thewh1teagle/e2219feb75cd7e06354bb3bff8d7f7d7 to your computer and use it in GitHub Desktop.

Select an option

Save thewh1teagle/e2219feb75cd7e06354bb3bff8d7f7d7 to your computer and use it in GitHub Desktop.
Reset isp connection on archer vr400 (TP-LINK)
#!/usr/bin/python3
from time import sleep
from datetime import timedelta
from selenium import webdriver
from selenium.webdriver.chrome.options import Options as chrome_Options
from datetime import datetime
import os
def ping(ip):
response = os.system("timeout 0.1 ping -c 1 " + ip + " > /dev/null 2>&1")
# and then check the response...
if response == 0:
return True
return False
def reset_isp(password: str, headless=True):
print("Resetting isp...")
options = chrome_Options()
options.headless = headless
driver = webdriver.Chrome(options=options)
driver.get("http://192.168.1.1")
input_login = driver.find_element_by_xpath("//input[@type='password']")
input_login.send_keys(password)
login_btn = driver.find_element_by_xpath("//button[@id='pc-login-btn']")
login_btn.click()
try:
confirm_btn = driver.find_element_by_xpath("//button[@id='confirm-yes']")
confirm_btn.click()
except: pass
sleep(3)
advanced_btn = driver.find_element_by_xpath("//span[text()='Advanced']")
advanced_btn.click()
sleep(1)
network_btn = driver.find_element_by_xpath("//span[text()='Network']")
network_btn.click()
sleep(1)
internet_btn = driver.find_element_by_xpath("//span[text()='Internet']")
internet_btn.click()
sleep(1)
try:
disconnect_btn = driver.find_element_by_xpath("//span[text()='Disconnect']")
disconnect_btn.click()
except: pass
wait_until = datetime.now() + timedelta(seconds=30)
connect_btn = None
while not connect_btn:
if wait_until < datetime.now(): # Timeout
break
try:
connect_btn = driver.find_element_by_xpath("//span[text()='Connect']")
print("found!")
except:
print("Not yet")
sleep(0.1)
connect_btn.click()
sleep(2)
driver.close()
if __name__ == '__main__':
password = 'password'
failures = 0
while True:
result = ping('1.1.1.1')
if result:
print("pinged")
failures = 0
else:
print("not pinged")
failures += 1
if failures >= 10:
result = ping("192.168.1.1")
if result:
reset_isp(headless=True, password=)
failures = 0
sleep(10)
sleep(0.5)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment