相关文章推荐
安静的包子  ·  重庆市_百度百科·  4 月前    · 
开朗的茄子  ·  Amazon Live·  1 年前    · 
聪明的炒饭  ·  病理生理学系·  1 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

We are trying to deploy Dynamic Access Policies (DAP) for Cisco AnyConnect client that will check end users' computer whether they have AntiVirus installed and running, firewall is up and running, and has certain Windows Updates (KB). Cisco has a nice web site that show these in different scripts, however, we want to merge these three scripts into one.

Below is the code and the web site that shows Lua script for AntiVirus and Firewall check. Could you please help me to merge this script with Hotfix KB check as well? https://www.cisco.com/c/en/us/support/docs/security/asa-5500-x-series-next-generation-firewalls/115947-dap-adv-functions-00.html#anc9

Thanks in advance

        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
        return false
    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
        return false
    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)()

The way forward: separate functionality. Then, you can call an assertion and combine calls using a logical and:

Hotfix KB check:

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
                return (false)

AntiVirus check:

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
    return false

Firewall check:

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
    return false

Then:

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

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.