
{
    "name"  : "web认证交互异常",
    "problems" : {
        "step_1" : {
            "desc"      : "【问题】认证超时",
            "advice"    : "【建议】检查认证服务器状态及通路多次收集，若出现aaa超时记录变化（aaa recv auth accept %u reject %u timeout %u），需要结合3/4进行排查。"
        },
		"step_2" : {
            "desc"      : "【问题】用户状态异常",
            "advice"    : "【建议】检查认证服务器状态及通路多次收集，出现非Init的统计值数据有变化，则认证异常下线数较多，建议排查认证服务器及通路等。 recv auth accept %u reject %u timeout %u），需要结合3/4进行排查。"
        },
		"step_3" : {
            "desc"      : "【问题】radius服务器异常",
            "advice"    : "【建议】检查认证服务器状态及通路多次收集，若出现dead count次数产生变化，需要检测radius服务器是否正常，设备与radius服务器通路是否稳定。同时排查是否设备端的检测条件太苛刻。 recv auth accept %u reject %u timeout %u），需要结合3/4进行排查。"
        },
		"step_4" : {
            "desc"      : "【问题】radius服务器异常",
            "advice"    : "【建议】检查认证服务器状态及通路检测radius服务器，是否有必要开启radius逃生功能 recv auth accept %u reject %u timeout %u），需要结合3/4进行排查。"
        }
    }
}

---------------------------code-------------------------------
response = cli('deb web stat')
if response.indexOf("aaa recv auth accept %u reject %u timeout %u") != -1:
	add_problem("step_1")
	return 'warn'
end

res = cli("debug web ustat timeout")
res = res.split(/\r?\n/)
i = 1
while i < (res.length - 1):
	resTmp = res[i]
	if (resTmp.indexOf("WBA_USTATE_UNINITIALIZED") == -1 && resTmp.indexOf("ONLINE-TIME-LIMIT") == -1):
		num = resTmp.match(/\d+/)
		if num != null:
			num = num[0]
			if num != 0:
				add_problem("step_2")
				return 'warn'
				break
			end
		end
	end
	i = i + 1
end

res = cli("show radius server")
if res.indexOf("dead count") != -1:
	add_problem("step_3")
	return 'warn'
end
res = cli("show radius timeout record")
if res.indexOf("Server No Response") != -1:
	add_problem("step_4")
	return 'warn'
end

return 'success'