我们单位某些人员每天8:00~16:00可以上规定的网站,下午16:00后可上网不受限制。如果能只在配置文件中更换指定的人员,其余的保持不变,这样就可以达到定时开关部分固定人员上网,又不影响一些临时人员上网的目的。怎么实现呢?如果能够把账号文件读出来,修改相应的账号,再把文件写回去不就解决了吗?
经过考虑选择使用脚本来完成,简单实用。
先来观察一下代理服务器软件CCProxy的账号信息是如何储存的,下面是一个账号的信息:
[User006] ——账号ID UserName=VOIP-1——账号名称 Password=——账号密码 MACAddress=——网卡地址 IPAddressLow=192.168.0.8——地址段开始地址 IPAddressHigh=192.168.0.8——地址段结束地址 ServiceMask=98——开启服务的组合码 MaxConn=-1——最大连接数 BandWidth=-1——使用带宽数 WebFilter=0——网站过滤类型(-1为无限制) TimeSchedule=-1——时间过滤类型 EnableUserPassword=0——使用密码判断连接用户(0为不采用,1为采用) EnableIPAddress=1——使用IP判断连接用户(0为不采用,1为采用) EnableMACAddress=0——使用MAC判断连接用户(0为不采用,1为采用) 对我们有用的是IPAddressLow、IPAddressHigh、WebFilter这3条语句, 由于是单机,因此IPAddressLow=IPAddressHigh。注意, WebFilter语句在IPAddressHigh下第4行,这在脚本中有所体现。 此脚本需要服务器具有FSO并且Wsript 5.6以上,具体脚本如下: dim fs1,fs2 dim file2 dim ts,s dim i '声明FSO对象 set fs1=CreateObject(“Scripting.FileSystemObject”) set fs2=CreateObject(“Scripting.FileSystemObject”) '判断是否有相应的账号文件是否存在,若存在继续进行,否则直接到结束释放对象 if fs1.FileExists(“D:\CCproxy\accinfo.ini”)then '设置ts为打开的账号文件 set ts=fs1.OpentextFile(“D:\CCproxy\accinfo.ini”,1) '创建一个新的文件,用以储存更改后数据 set file2 = fs2.CreateTextFile(“D:\CCproxy\accinfo2.ini”, True) '当没有到达文件尾 Do while ts.AtEndOfLine<>true '读取一行 S = ts.ReadLine '如果是需更换的IP,则进行 if trim(S)=trim(“IPAddressHigh=192.168.0.122”) or trim(S)=trim(“IPAddressHigh=192.168.0.40”) or trim(S) =trim(“IPAddressHigh=192.168.0.195”) then '把本行写入file2文件中 file2.WriteLine s '继续往下读三行 for i=1 to 3 S = ts.ReadLine file2.WriteLine s Next '第四行 S = ts.ReadLine '判断如果原来是关闭的就开启,原来是开启的就关闭,乒乓开关 if S=“WebFilter=0” then S=“WebFilter=-1” else S=“WebFilter=0” end if '写入file2文件 file2.WriteLine s else '不是需更换的IP直接写入file2 file2.WriteLine s end if '循环 loop '循环完毕后关闭对象 file2.close ts.close
'删除原配置文件 if fs1.FileExists(“D:\CCproxy\accinfo.ini”) then fs1.DeleteFile(“D:\CCproxy\accinfo.ini”) end if
'把新文件更名为配置文件 if fs2.FileExists(“D:\CCproxy\accinfo2.ini”) then fs2.MoveFile “D:\CCproxy\accinfo2.ini”,“D:\CCproxy\accinfo.ini” end if
end if '释放对象 set fs1=nothing set fs2=nothing
|