VBS获取域名解析ip并加入防火墙

由于公司ip不固定只能使用域名动态解析,但是公司外放的服务器开着防火墙又需要cactie外部监控,不得不写一个挂载脚本去动态解析ip写入防火墙。又加上该服务器windows还不准装任何不相干的语言环境。。。。python无处施展能力,不得不用vbs解决。

Dim http,IP1,IP2
`外部网站解析域名
Function getIP(domain)
	set fs =createobject("scripting.filesystemobject")
	Set http = CreateObject("Msxml2.ServerXMLHTTP")
	http.open "GET","http://m.ip138.com/ip.asp?ip="&domain, False
	http.send
	Set Rs = New RegExp
	Rs.Global = True
	Rs.IgnoreCase = True
	Rs.Pattern = "((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))"
	Set Match = Rs.Execute(http.responsetext)
	For Each m In Match 
		getIP=m.Value
                exit for
	Next
End Function
`添加防火墙规则
Function Addfirewall(name,port,state,remoteaddr) 
	Set objFirewall=CreateObject("HNetCfg.FwMgr") 
	Set objPolicy=objFirewall.LocalPolicy.CurrentProfile 

	Set objPort=CreateObject("HNetCfg.FwOpenPort") 
	objPort.Port=port 
	objPort.Name=name 
	objPort.Enabled=state 
        objPort.RemoteAddresses=remoteaddr
	Set colPorts=objPolicy.GloballyOpenPorts 
	colPorts.Add(objPort) 
End Function
`本地解析域名
Function getIP_local(domain)
	Dim objShell : Set objShell = WScript.CreateObject("WScript.Shell")
	Dim strHostname : strHostname = domain
	Dim objRet : Set objRet = objShell.Exec("%comspec% /c nslookup -type=a -retry=1 -timeout=0 " & strHostname)
	Dim objStdErr : Set objStdErr = objRet.StdErr
	Dim flgFound : flgFound = true
	Do Until objStdErr.AtEndOfStream
		If Left(objStdErr.ReadLine(), 3) = "***" Then
			flgFound = false
			Exit Do
		End If
	Loop
	getIP_local = ""
	If flgFound Then
		Dim strLine
		Dim objStdOut : Set objStdOut = objRet.StdOut
		Do Until objStdOut.AtEndOfStream
			strLine = objStdOut.ReadLine()
			If Left(strLine, 7) = "Address" Then
				getIP_local = Split(strLine, " ")(2)
			End If
		Loop
	End If
End Function

IP1=getIP_local("域名A")
IP2=getIP_local("域名B")
Set objFirewall = CreateObject("HNetCfg.FwMgr")
Set objPolicy = objFirewall.LocalPolicy.CurrentProfile
Set colPorts = objPolicy.GloballyOpenPorts

if ((IP1<>"") And (IP2<>"")) then
	on error resume next
	set objPort = colPorts.Item("规则名",6)
	if err.number<>0 then  
		Call Addfirewall("规则名",端口,1,IP1&","&IP2)
		set objPort = colPorts.Item("规则名",6)
	end if
	Err.Clear
	On Error Goto 0
	if (objPort.RemoteAddresses<>(IP1&"/255.255.255.255,"&IP2&"/255.255.255.255") and objPort.RemoteAddresses<>(IP2&"/255.255.255.255,"&IP1&"/255.255.255.255")) then
		objPort.RemoteAddresses=IP1&","&IP2
	end if
end if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值