Exec onlyif注册表值不存在

时间:2014-03-17 18:26:25

标签: ruby puppet

*的 *修改 **

我通过玩游戏找到了解决方案:

class add_route
{
        exec { "route_to_internal_network":
                command => "C:\Windows\System32\ROUTE.EXE add 192.168.5.254 mask 255.255.255.255 10.5.5.5 -p",
                unless => "C:\Windows\System32\reg.exe query HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes /f 192.168.5.254,255.255.252.0,10.5.5.5,1",
        }
}

如果其他人遇到类似的问题,我会留下这篇文章

*的 *修改 **


我正在尝试编写一个puppet清单,为我的一些Windows主机服务器添加一个持久的静态路由。到目前为止,我正在考虑创建一个类:

class add_route
{
    exec { "route_to_internal_network":
        command => "C:\Windows\System32\ROUTE.EXE add 192.168.5.254 mask 255.255.255.255 10.5.5.5 -p",
    }
}

但是,每当木偶客户端与木偶大师签到时,此清单将执行命令。

我希望在我的班级中使用onlyif,但在尝试检查包含我的路线的缺席注册表值时似乎有点混乱。这是最好的方法吗?还有其他想法吗?

我想我需要做类似的事情:

class add_route
{
    exec { "route_to_internal_network":
        command => "C:\Windows\System32\ROUTE.EXE add 192.168.5.254 mask 255.255.255.255 10.5.5.5 -p",
        onlyif => ???
    }
}

我希望我的onlyif语句与

匹配
C:\Windows\System32\reg.exe query HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes /f '192.168.5.254,255.255.255.255,10.5.5.5,1'

如果上述命令的结果是:

  

搜索结束:找到0个匹配。

但是,我认为onlyif只是在查找返回码,因此无论是否找到此值,命令都会成功完成。

有没有人知道如何检查木偶清单中是否缺少注册表值?

1 个答案:

答案 0 :(得分:2)

我通过玩游戏找到了解决方案:

class add_route
{
        exec { "route_to_internal_network":
                command => "C:\Windows\System32\ROUTE.EXE add 192.168.5.254 mask 255.255.255.255 10.5.5.5 -p",
                unless => "C:\Windows\System32\reg.exe query HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes /f 192.168.5.254,255.255.255.255,10.5.5.5,1",
        }
}

如果其他人遇到类似的问题,我会留下这篇文章