Skip to content

Instantly share code, notes, and snippets.

@viennadd
Created August 14, 2016 08:29
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save viennadd/fd69bce4d96f7d53ac714d6cfebe72c2 to your computer and use it in GitHub Desktop.
Renew My TP-Link IP
import os
import re
import time
import requests
GlobalVars = {
'HTTP_ADDRESS': 'http://192.168.----',
'AUTHORIZATION': 'Basic ============'
}
def get_request(url):
headers = {
'Authorization': GlobalVars['AUTHORIZATION'],
}
res = requests.get(url, headers=headers)
return res.text
def get_status():
url = GlobalVars['HTTP_ADDRESS'] + '/userRpm/StatusRpm.htm'
return get_request(url)
def get_wan_ip_from_status(status):
m = re.search(r'var wanPara = new Array\((.*?)\);', status, re.DOTALL)
try:
wanParams = m.group(1).split(',')
wan_ip = wanParams[7][2:-1]
return wan_ip
except AttributeError:
print('can not find wan ip in status')
def release_wan_ip():
url = GlobalVars['HTTP_ADDRESS'] + '/userRpm/StatusRpm.htm?ReleaseIp=Release&wan=1'
get_request(url)
def renew_wan_ip():
url = GlobalVars['HTTP_ADDRESS'] + '/userRpm/StatusRpm.htm?RenewIp=Renew&wan=1'
get_request(url)
def reset():
previous_ip = get_wan_ip_from_status(get_status())
print('Previous WAN IP = %s' % (previous_ip))
while True:
current_ip = get_wan_ip_from_status(get_status())
print('Releasing::Current WAN IP = %s' % (current_ip))
if current_ip == '0.0.0.0':
print('Released.')
break
else:
release_wan_ip()
time.sleep(1)
while True:
current_ip = get_wan_ip_from_status(get_status())
print('Renewing::Current WAN IP = %s' % (current_ip))
if current_ip != '0.0.0.0':
print('Renewed')
break
else:
renew_wan_ip()
time.sleep(5)
if current_ip != previous_ip:
print('Successed! New IP = %s' % (current_ip))
return True
else:
print('Failed.')
return False
if __name__ == '__main__':
reset()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment