gpt4 book ai didi

chef-infra - 具有自定义 GUID 的 Windows 防火墙的 Chef Guard

转载 作者:行者123 更新时间:2023-12-01 12:41:23 26 4
gpt4 key购买 nike

我能够使用 Chef 和 Powershell 创建自定义 Windows 防火墙规则。我对 not_if 有疑问。

我从这里使用了注册表项方法: http://docs.opscode.com/resource_registry_key.html

自定义防火墙规则会创建一个具有随机 GUID 的注册表项。我无法使用这些方法,因为我不知道键名。每个节点上的键值都相同,但键名不同。

以下作品。但是自定义键具有键名的 GUID

execute "enableMSDTCFirewall" do
command "netsh advfirewall firewall set rule group=\"Distributed Transaction Coordinator\" new enable=yes"
action :run
not_if { registry_data_exists?("HKLM\\SYSTEM\\CurrentControlSet\\Services\\SharedAccess\\Parameters\\FirewallPolicy\\FirewallRules", {:name => 'MSDTC-In-TCP', :type => :string, :data => "v2.20|Action=Allow|Active=TRUE|Dir=In|Protocol=6|App=%SystemRoot%\\system32\\msdtc.exe|Name=@FirewallAPI.dll,-33503|Desc=@FirewallAPI.dll,-33506|EmbedCtxt=@FirewallAPI.dll,-33502|"})}
end

除了一个标志,我想不出另一种方法来检查规则是否存在并且不让脚本在每个客户端运行期间执行。有任何想法吗?

结束了这个工作

execute "enableFirewallRuleNameOutbound" do
command "powershell.exe New-NetFirewallRule -DisplayName \"RuleName\" -Direction Outbound -LocalPort 20000 -Protocol TCP -Action Allow"
action :run
not_if 'netsh advfirewall firewall show rule name=\"RuleName\" > nul'

结束

最佳答案

我猜该规则有一个您没有使用或可以用来提供帮助的名称。像下面这样的东西应该可以工作。

添加规则时,给它起个名字:

netsh advfirewall firewall add rule name=enableMSDTCFirewall ...

检查 not_if 中的规则:

not_if 'netsh advfirewall firewall show rule name=enableMSDTCFirewall > nul'

如果规则已存在,show 命令应返回 0 的 ERRORLEVEL

关于chef-infra - 具有自定义 GUID 的 Windows 防火墙的 Chef Guard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24251523/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com