存档
vbs写的IIS日志分析工具
为什么要开发vbs写的IIS日志分析工具?
在网上找了很多IIS日志分析工具,功能实在太有限,有的仅能分析百度、谷歌等搜索引擎爬虫的来访次数,远远达不到我们的用户的需求。作为一个小站长,有的时候也要分析一下自己站点的广告点击情况,静态页面的还好说,下载类的业务就不好统计了。耗时一晚上写出来本工具分享给大家,同时申请落伍,请大家帮顶。申请地址:http://www.im286.com/thread-5021543-1-1.html 。
IIS日志分析工具的使用方法
本工具对于初次接收vbs脚本的用户来说,可能有点麻烦。下面我们就一步一步来说说该工具的使用方法。
1、如果 vbscript 默认引擎非cscript,需要修改称cscript。修改方法很简单,直接在运行中输入:cscript //Nologo //H:Cscript 即可切换
2、下载IIS日志分析工具 压缩包 http://www.miaoqiyuan.cn/product/iis-log.rar,解压,打开log.vbs,修改dbpath为您当前解压的路径。
3、下载您的log日志文件,删掉前三行和第四行的#Fields: ,保存文件名为test.txt,保存到解压目录。
4、在开始运行中用cmd命令打开命令提示符,直接把 log.vbs拖拽到命令提示符中,回车即可开始分析。
以后会出软件版本吗?
会的,不过最近不会,其实现在的代码,直接拿到vb中,套个界面就比市面上的iis日志工具强大,但是现在实际还没有成熟,等正式发布时,功能绝对的强大。
IIS日志分析工具是免费的吗?
是的,本工具供站长免费使用,但是传播请保留我们的版权信息。也许您的建议将会出现在我们未来的软件版中。
vbs写的IIS日志分析工具代码如下:
‘=============================================================
‘= Copyright (c) 2010 猫七(QQ:77068320) =
‘= [...]
最近有个工作,知道了域名,把ip导出来,大约800多条记录,一个一个查麻烦了。有没有其他方法能让asp通过域名查IP呢?
在网上搜索了一下,asp通过域名查ip需要安装一个TCPIP.DNS的组件。我下载了一个测试了一下,效率并不是很高。
一般查询域名的ip的方法是ping一下,得到一个ip。我们先用VBScript测试。
Function strCut(strContent,StartStr,EndStr,CutType)
Dim strHtml,S1,S2
strHtml = strContent
On Error Resume Next
Select Case CutType
Case 1
S1 = InStr(strHtml,StartStr)
[...]
因为工作需要,经常需要操作数据转换的工作。比如:从dz导入到pw,或从新云导入到5ucms,把数据从这个表导入到那个表。操作的多了,认为自己对数据库转化还是有一定的研究的,今天写出了,希望能对做同样工作的朋友一些帮助或者启发。
一般我完成数据库转换的脚本选择vbscript。原因吗,简单当然是一个很重要的因素,更重要的常用的数据库(如:MySQL)都有ADO的驱动。
数据库转化第一步,先要确定目的数据库的类型和当前数据库的类型。如果access数据库转换成mysql数据库。则需要先去下载MySQL ADO的驱动。
第二步,连接好数据库了,现在要分析数据库对应的字段之间的关系。如果能把需要操作的数据表的字段导出来应该能快很多。既然选择了vbscript脚本,我们就让他来帮忙。
‘Auth:猫七(Miaoqiyuan.cn)
‘outTableCol(表名)
‘Desc:返回某表的所有字段
function outTableCol(tbl)
tablesCol=""
set rs=createobject("ADODB.Recordset")
rs.open "select top 1 * from "&tbl,conn,1,1
for i=0 to rs.fields.count-1
tablesCol=tablesCol & rs.fields(i).name & ","
next
outTableCol=tablesCol
rs.close
set rs=nothing
end function
直接使用Wscript.echo outTableCol(表名),哈哈,表明全输出来了(最好将vbscript的脚本宿主改成cscript)。
第三步,字段的对应关系分析好了,自然要进入实质性的过程了-插入数据。
insert into 语句?No,我们用ADODB.Recordset。使用MySQL数据库的使用ADODB也可以使用哦,这也是我使用vbscript的另一个原因,vbscript对ado的兼容性不用我说了吧。。。确定了用ADODB.Recordset,写这种Rs(..)=Rs(..)的方式也是挺麻烦的,现在我们再次请vbscript出山。
‘Auth:猫七(Miaoqiyuan.cn)
‘CreateRsStr(字段名,用’,'分隔,两个字段间的转换用=>)
‘例如:
‘CreateRsStr "d_id,d_dme" #Rs1("d_id")=Rs2("d_id")
‘CreateRsStr "d_id=>c_id" [...]
PushWeb,应该算是我自造的一个词,Push发送,PushWeb则是把采集到的数据发送到站点的一个方案,临时使用vbscript脚本编写。那有的朋友可能会说CMS后台之类的,或者采集软件直接发上来不更好吗?原因如下:
CMS后台,来回复制好麻烦,而且容易出错。复制一篇两篇还可以,如果1000,10000呢?
采集软件发送,这个呢?如果信息都是采集的,按原来的列表顺序原封不动的发上来,恐怕。。。。而且在采集软件了并不是很方便的控制。
PushWeb的好处,可以同时发送数据到同一台服务器上的多个站点。为什么不用asp?因为一般iis站点,我习惯每个站点权限独立,假如pushWeb拥有所有站点的权限,安全性可能会降低。而且同时查询较多数据时,可能占用cpu过多,而影响web站点,而wscript可以通过累了sleep一下。另外后期准备为站点加些计划任务(比如自动生成,现在还是Beta0.1,仅供发布信息),这样只需要一个进程就可以了。
实现方法:
‘pushWeb beta0.1
‘刷新时间
const pushWeb_flush_Time=10000
‘数据库路径
const pushWeb_dbPath=”D:\WebDesign\Products\pushWeb\pushWebDB.mdb”
function pushWeb()
dim conn,rs,push_id,push_webid,push_sql
dim web_db,web_name
dim push_Arr,push_str
set conn=createobject(“ADODB.connection”)
conn.open “provider=microsoft.jet.oledb.4.0;data source=”&pushWeb_dbPath
set rs=conn.execute(“select push_id,push_webid,push_sql from push”)
if rs.eof then
push_id=0
wscript.echo “没有更新,”&pushWeb_flush_Time/1000&”秒后再检查…”
else
push_id=rs(0)
push_webid=rs(1)
push_sql=rs(2)
end if
rs.close
set rs=nothing
if push_id0 then
conn.execute(“delete from push where push_id=”&push_id)
set rs=conn.execute(“select web_name,web_db from web where web_id=”&push_webid)
if not rs.eof then
web_name=rs(0)
web_db=rs(1)
else
wscript.echo “错误的任务请求,”&pushWeb_flush_Time/1000&”秒后再检查…”
end if
rs.close
set rs=nothing
conn.close
if web_db”" [...]
刚才发布了一篇文章:ASP/VBScript 汉字转拼音程序,只支持GBK(http://www.miaoqiyuan.cn/p/vbscript-gbk-pinyin)。你可能已经猜出来了,为了SEO优化而转换为拼音的路径,用这个函数可以很方便的解决了。但是中国文字博大精深,相同读音的字太多了,那么上边说的方法生成的路径可能就要冲突了,怎么办呢?在此,我给大家提供一个解决方法。因为是windows平台,使用vbscript脚本来实现。
实际很简单。先用like查询是否有类似的路径,并记录结果数tms。如果tms=0怎用拼音,如果结果数大于1,则用拼音&结果数的方法。很简单吧,给出的代码如下:
‘cscript [thisScriptName.vbs]
set conn=createobject(“ADODB.connection”)
conn.open “provider=microsoft.jet.oledb.4.0;data source=D:\miaoqiyuan\Products\labs\故事\dat\db.mdb”
‘table c
‘n 故事名称
‘d 标题读音
‘g 故事
‘c 出处
‘p 标题首写字母
‘u 故事路径
set rs=createobject(“ADODB.recordset”)
rs.open “select * from c”,conn,3,2
do while not rs.eof
staTme=timer
tms=conn.execute(“select count(u) from c where u like ‘”&rs(“p”)&”%’”)(0)
wscript.echo “正在整理”&rs(“n”)&”中…”
if tms=0 then
rs(“u”)=rs(“p”)
else
rs(“u”)=rs(“p”)&tms
end if
rs.update
wscript.echo “整理”&rs(“n”)&”完毕,用时”&(Timer()-staTme)*1000&”毫秒。”
rs.movenext
loop