import
time, datetime, os
import
logging
from
lib.aliyunDNSTools
import
Sample
from
lib.DNSRecord
import
*
from
lib.myip
import
*
loglevelflag
=
logging.INFO
logformatflag
=
"%(asctime)s %(name)s:%(levelname)s:%(message)s"
logging.basicConfig(filename
=
"run.log"
, filemode
=
"w"
,
format
=
logformatflag, level
=
loglevelflag)
console
=
logging.StreamHandler()
console.setLevel(loglevelflag)
formatter
=
logging.Formatter(logformatflag)
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
class
mainRunner :
oldip
=
''
myip
=
''
needCheckDNS
=
False
def
__init__(
self
):
try
:
self
.oldip
=
myIP.getMyIp()
self
.needCheckDNS
=
True
except
:
print
(
">>>"
+
datetime.datetime.now().strftime(
'%Y-%m-%d %H:%M:%S.%f'
)
+
"初始化获取IP失败!"
)
logging.info(
"初始化获取IP失败!"
)
pass
def
checkIPChange(
self
):
try
:
self
.myip
=
myIP.getMyIp()
print
(
">>>"
+
datetime.datetime.now().strftime(
'%Y-%m-%d %H:%M:%S.%f'
)
+
' oldip:'
+
self
.oldip
+
',newip:'
+
self
.myip)
logging.info(
' oldip:'
+
self
.oldip
+
',newip:'
+
self
.myip)
if
len
(
self
.myip) <
1
:
return
False
return
self
.myip !
=
self
.oldip
except
:
print
(
">>>"
+
datetime.datetime.now().strftime(
'%Y-%m-%d %H:%M:%S.%f'
)
+
"检测IP变化时,获取IP失败!"
)
logging.info(
"检测IP变化时,获取IP失败!"
)
return
False
def
checkDNS(
self
):
try
:
retdata
=
Sample.getDNSRecord()
dns
=
DNSRecord()
dns.loadFromJson(retdata[
'body'
][
'DomainRecords'
][
'Record'
][
0
])
if
dns.Value !
=
self
.myip:
dns.Value
=
self
.myip
Sample.updateDNSRecord(dns)
self
.needCheckDNS
=
False
except
:
print
(
">>>"
+
datetime.datetime.now().strftime(
'%Y-%m-%d %H:%M:%S.%f'
)
+
'检测更新DNS时报错!'
)
logging.info(
"检测更新DNS时报错!"
)
def
run(
self
):
while
True
:
tempFlage
=
self
.checkIPChange()
self
.needCheckDNS
=
tempFlage
or
self
.needCheckDNS
if
self
.needCheckDNS:
self
.checkDNS()
print
(
">>>"
+
datetime.datetime.now().strftime(
'%Y-%m-%d %H:%M:%S.%f'
)
+
"检测完成,开始休眠^_^"
)
logging.info(
"检测完成,开始休眠^_^"
)
time.sleep(
60
*
60
*
1
)