Lua Cisco AnyConnect 脚本

Lua Scripts for Cisco AnyConnect

我们正在尝试为 Cisco AnyConnect 客户端部署动态访问策略 (DAP),这将检查最终用户的计算机是否安装了防病毒软件并且 运行、防火墙已启动并且 运行,以及有某些 Windows 更新 (KB)。 Cisco 有一个不错的网站,它以不同的脚本显示这些内容,但是,我们想将这三个脚本合并为一个。

下面是显示 Lua 防病毒和防火墙检查脚本的代码和网站。你能帮我把这个脚本也和 Hotfix KB 检查合并吗? https://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/115947-dap-adv-functions-00.html#anc9

提前致谢

        assert(function()
    function checkav(antix)
        if (type(antix) == "table") then
            for k,v in pairs(antix) do
                if (EVAL(v.activescan, "EQ", "ok", "string") and EVAL (v.lastupdate, "LT", "2592000", "integer")) then
                    return true
                end
            end
        end
        return false
    end
    function checkfw(antix)
        if (type(antix) == "table") then
            for k,v in pairs(antix) do
                if (EVAL(v.enabled, "EQ", "ok", "string")) then
                    return true
                end
            end
        end
        return false
    end
    return (checkav(endpoint.av) and checkfw(endpoint.fw))
end)()
    assert(function ()
    local pattern = "KB944"
    local true_on_match = true
    local match = false
    for k,v in pairs(endpoint.os.hotfix) do
        print(k)
        match = string.find(k, pattern)
        if (match) then
            if (true_on_match) then
                return true
            else return (false)
            end
        end
    end
end)()

前进的道路:独立的功能。然后,您可以使用逻辑 and:

调用断言和组合调用

修补程序知识库检查:

function hotfixKb()
    local pattern = "KB944"
    local true_on_match = true
    local match = false
    for k,v in pairs(endpoint.os.hotfix) do
        print(k)
        match = string.find(k, pattern)
        if (match) then
            if (true_on_match) then
                return true
            else
                return (false)
            end
        end
    end
end

防病毒检查:

function checkAntiVirus(antix)
    if (type(antix) == "table") then
        for k,v in pairs(antix) do
            if (EVAL(v.activescan, "EQ", "ok", "string") and EVAL (v.lastupdate, "LT", "2592000", "integer")) then
                return true
            end
        end
    end

    return false
end

防火墙检查:

function checkFireWall(antix)
    if (type(antix) == "table") then
        for k,v in pairs(antix) do
            if (EVAL(v.enabled, "EQ", "ok", "string")) then
                return true
            end
        end
    end

    return false
end

然后:

assert(hotfixKb() and checkAntiVirus() and checkFireWall())