|
|
@ -636,6 +636,7 @@ class SysLog():
|
|
|
|
verbose = 1
|
|
|
|
verbose = 1
|
|
|
|
timeout = 10
|
|
|
|
timeout = 10
|
|
|
|
files = []
|
|
|
|
files = []
|
|
|
|
|
|
|
|
skiplogs = True
|
|
|
|
mtdlist = []
|
|
|
|
mtdlist = []
|
|
|
|
bdata = None # EnvBuffer()
|
|
|
|
bdata = None # EnvBuffer()
|
|
|
|
|
|
|
|
|
|
|
@ -673,7 +674,7 @@ class SysLog():
|
|
|
|
die("Xiaomi Mi Wi-Fi device not found (IP: {})".format(gw.ip_addr))
|
|
|
|
die("Xiaomi Mi Wi-Fi device not found (IP: {})".format(gw.ip_addr))
|
|
|
|
if self.verbose > 0:
|
|
|
|
if self.verbose > 0:
|
|
|
|
print("Start generating syslog...")
|
|
|
|
print("Start generating syslog...")
|
|
|
|
r2 = requests.get(gw.apiurl + "misystem/sys_log", timeout = self.timeout)
|
|
|
|
r2 = requests.get(gw.apiurl + "misystem/sys_log", timeout = timeout)
|
|
|
|
if r2.text.find('"code":0') < 0:
|
|
|
|
if r2.text.find('"code":0') < 0:
|
|
|
|
die("SysLog not generated!")
|
|
|
|
die("SysLog not generated!")
|
|
|
|
try:
|
|
|
|
try:
|
|
|
@ -685,7 +686,7 @@ class SysLog():
|
|
|
|
if self.verbose > 0:
|
|
|
|
if self.verbose > 0:
|
|
|
|
print('Downloading SysLog from file "{}" ...'.format(url))
|
|
|
|
print('Downloading SysLog from file "{}" ...'.format(url))
|
|
|
|
zip = b''
|
|
|
|
zip = b''
|
|
|
|
with requests.get(url, stream=True, timeout = self.timeout) as r3:
|
|
|
|
with requests.get(url, stream=True, timeout = timeout) as r3:
|
|
|
|
r3.raise_for_status()
|
|
|
|
r3.raise_for_status()
|
|
|
|
for chunk in r3.iter_content(chunk_size=8192):
|
|
|
|
for chunk in r3.iter_content(chunk_size=8192):
|
|
|
|
zip += chunk
|
|
|
|
zip += chunk
|
|
|
@ -698,7 +699,7 @@ class SysLog():
|
|
|
|
for member in tar.getmembers():
|
|
|
|
for member in tar.getmembers():
|
|
|
|
if not member.isfile() or not member.name:
|
|
|
|
if not member.isfile() or not member.name:
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
if member.name.find('usr/log/') >= 0: # skip raw syslog files
|
|
|
|
if self.skiplogs and member.name.find('usr/log/') >= 0: # skip raw syslog files
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
item = types.SimpleNamespace()
|
|
|
|
item = types.SimpleNamespace()
|
|
|
|
item.name = member.name
|
|
|
|
item.name = member.name
|
|
|
@ -724,7 +725,7 @@ class SysLog():
|
|
|
|
def parse_baseinfo(self, fatal_error = False):
|
|
|
|
def parse_baseinfo(self, fatal_error = False):
|
|
|
|
self.device_sn = ""
|
|
|
|
self.device_sn = ""
|
|
|
|
file = self.get_file_by_name('xiaoqiang.log', fatal_error)
|
|
|
|
file = self.get_file_by_name('xiaoqiang.log', fatal_error)
|
|
|
|
txt = file.data.decode('ascii')
|
|
|
|
txt = file.data.decode('latin_1')
|
|
|
|
sn = re.search('====SN\n(.*?)\n====', txt)
|
|
|
|
sn = re.search('====SN\n(.*?)\n====', txt)
|
|
|
|
if not sn:
|
|
|
|
if not sn:
|
|
|
|
if fatal_error:
|
|
|
|
if fatal_error:
|
|
|
@ -739,7 +740,7 @@ class SysLog():
|
|
|
|
def parse_mtdlist(self):
|
|
|
|
def parse_mtdlist(self):
|
|
|
|
self.mtdlist = []
|
|
|
|
self.mtdlist = []
|
|
|
|
file = self.get_file_by_name('xiaoqiang.log', fatal_error = True)
|
|
|
|
file = self.get_file_by_name('xiaoqiang.log', fatal_error = True)
|
|
|
|
txt = file.data.decode('ascii')
|
|
|
|
txt = file.data.decode('latin_1')
|
|
|
|
x = txt.find("\nMTD table:\n")
|
|
|
|
x = txt.find("\nMTD table:\n")
|
|
|
|
if x <= 0:
|
|
|
|
if x <= 0:
|
|
|
|
die('MTD table not found into syslog!')
|
|
|
|
die('MTD table not found into syslog!')
|
|
|
@ -788,7 +789,7 @@ if __name__ == "__main__":
|
|
|
|
gw = gateway.Gateway(timeout = 4, detect_ssh = False)
|
|
|
|
gw = gateway.Gateway(timeout = 4, detect_ssh = False)
|
|
|
|
if gw.status < 1:
|
|
|
|
if gw.status < 1:
|
|
|
|
die("Xiaomi Mi Wi-Fi device not found (IP: {})".format(gw.ip_addr))
|
|
|
|
die("Xiaomi Mi Wi-Fi device not found (IP: {})".format(gw.ip_addr))
|
|
|
|
slog = SysLog(gw, timeout = 17, verbose = 1, infolevel = 2)
|
|
|
|
slog = SysLog(gw, timeout = 22, verbose = 1, infolevel = 2)
|
|
|
|
sys.exit(0)
|
|
|
|
sys.exit(0)
|
|
|
|
|
|
|
|
|
|
|
|
fn_dir = ''
|
|
|
|
fn_dir = ''
|
|
|
|