112183883
初级用户
积分 128
发帖 31
注册 2006-10-23
状态 离线
|
『楼 主』:
[原创]网络神探运行状态查看工具
献给网吧工作的朋友们,将以下代码保存为任意VBS文件,双击便可执行。
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'//ProgramName: 网络神探运行状态查看工具
'//Author: 十一狼
'//About: 在网吧工作的朋友都知道网络神探这个东东,用来作什么的我就不说了,郁闷的是它经常会出问题,所以每隔一段时间还得打开网页查看一下其运行状态是否正常,要不然,公安部可能就得CALL你了。
'//...... 由于每次都是重复的动作,我便想到要写一个小程序来代替人工查看,于是便有了这个东东,你可以在程序中定制查看几小时范围内的数据是否正常,我预设时间是两个小时,你也可以将它改成你认为
'//...... 为合适的时间,如果网络神探服务器出现异常,你还可以按程序提示重启服务器。
'//...... 这只是一个简化版本,在完整版本中,可以完全脱离人手工点击,而让程序在你设定的循环时间内定时查询服务器,如果服务器出现异常,则自动重启服务器,目前完整版本已快写成,如果有朋友需要
'//...... 的话,请留言告之。
'//QQ: 112183883
'//EMail: 112183883@163.com
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit
On Error Resume Next
'定义一些将要用到的变量
Dim sRemoteHost
Dim sSqlUid
Dim sSqlPwd
Dim sDbName
Dim tStart
Dim tDate
Dim tInterval
Dim ConnErrStr
sRemoteHost = "192.168.0.254" '这时是你的网吧网络神探所在主机的IP地址,请根据自身情况设置
sSqlUid = "sa" 'SQL数据库用户名,不必修改
sSqlPwd = "rainsoft" 'SQL数据库密码,不必修改
sDbName = "NetDetective" 'SQL数据库名称,不必修改
tDate = Hour(Time()) '当前时间
tInterval = 2 '检测时间跨度,单位为小时,如果你要检查过去3个时的运行状态,请设为3
ConnErrStr = "网络神探连接失败,原因可能有如下几种:" & vbcrlf & vbcrlf
ConnErrStr = ConnErrStr & "1.服务器IP地址错误;" & vbcrlf
ConnErrStr = ConnErrStr & "2.数据库用户名或密码错误;" & vbcrlf
ConnErrStr = ConnErrStr & "3.服务器已关闭;" & vbcrlf '定义网络神探联接出错时的提示信息
Dim objConn
Dim objRs
Dim sSQLstr
If CInt(tDate)<tInterval Then
Dim AskInfo
AskInfo=MsgBox("当前系统时间小于你所设定的查询时间间隔,这样可能会导致查询结果不正确,你确定要继续执行程序吗? ",vbOkCancel,"")
If AskInfo=2 Then WScript.Quit
End If
Set objConn=CreateObject("ADODB.Connection") '建立数据库链接对象
objConn.Open "Provider=SqlOledb;Data Source=" & sRemoteHost & ";Uid=" & sSqlUid & ";Pwd=" & sSqlPwd & ";Database=" & sDbName '打开数据库
If Err Then '如果打开数据库过程中出现错误,则显示提示
Err.Clear
MsgBox ConnErrStr,,""
Else
Set objRs=CreateObject("ADODB.Recordset") '如果数据库成功打开,则建立数据库记录集对象
sSQLstr="select top 1 * from [tUser] order by sUserID desc" '定义SQL查询
objRs.Open sSQLstr,objConn,1,3 '打开数据库记录集
Dim resinfo
If Not objRs.EOF Then '判断数据库里是否有数据
tStart=CInt(tDate)-CInt(tInterval) '获得起始检查时间
Dim lastLoginData
Dim hourForRs
lastLoginData=objRs("dtLoginTime")
hourForRs=CInt(Split(Split(lastLoginData," ")(1),":")(0)) '获得数据库中最后一个人登录时间的小时数
Dim dateStrArray,dateStr
Dim timeStrArray,timeStr
Dim lastLoginStr
dateStrArray=Split(Split(lastLoginData," ")(0),"-")
dateStr=dateStrArray(0) & "年" & dateStrArray(1) & "月" & dateStrArray(2) & "日"
timeStrArray=Split(Split(lastLoginData," ")(1),":")
timeStr=timeStrArray(0) & "点" & timeStrArray(1) & "分" & timeStrArray(2) & "秒"
lastLoginStr=dateStr & timeStr
Dim boolVar
boolVar=False
Dim i
For i=tStart To tDate
If hourForRs=i Then '如果过去设定的时间内有一条数据,则说明网络神探运行正常
boolVar=True
Exit For
End If
Next
If boolVar=False Then
resinfo=MsgBox("网络神探在过去" & tInterval & "小时内没有一条数据记录,这可能有些不正常!要重启网络神探服务器吗? ",vbOKCancel,"")
If resinfo=1 Then reStartWin
Else
MsgBox "请放心,网络神探在过去" & tInterval & "小时内运行正常,当前最后一个人开卡上机的时间是在" & lastLoginStr & "! ",,""
End If
Else
resinfo=MsgBox("网络神探运行不正常!是否要重启网络神探服务器? ",vbOKCancel,"")
If resinfo=1 Then reStartWin
End If
objRs.Close
Set objRs=Nothing
End If
objConn.Close
Set objConn=Nothing
Sub reStartWin()
Dim Conn
Set Conn=CreateObject("ADODB.Connection")
Conn.Open "Provider=SqlOledb;Data Source=" & sRemoteHost & ";Uid=" & sSqlUid & ";Pwd=" & sSqlPwd & ";Database=master"
Conn.Execute "xp_cmdshell 'if exist c:\reStartWindows.vbs del c:\reStartWindows.vbs'"
Conn.Execute "xp_cmdshell 'echo set win32_os=getobject(""winmgmts:{(shutdown)}//./root/cimv2"").execquery(""select * from win32_operatingsystem where primary=true"")>>c:\reStartWindows.vbs'"
Conn.Execute "xp_cmdshell 'echo for each os in win32_os>>c:\reStartWindows.vbs'"
Conn.Execute "xp_cmdshell 'echo os.win32shutdown(6)>>c:\reStartWindows.vbs'"
Conn.Execute "xp_cmdshell 'echo next>>c:\reStartWindows.vbs'"
Conn.Execute "xp_cmdshell 'echo set win32_os=nothing>>c:\reStartWindows.vbs'"
Conn.Execute "xp_cmdshell 'c:\reStartWindows.vbs'"
If Err Then
Err.Clear
MsgBox "重启网络神探服务器失败,请用手工重新启动! ",,""
Else
MsgBox "网络神探服务器正在重启,请稍候再运行本程序! ",,""
End If
Conn.Close
Set Conn=Nothing
End Sub
[ Last edited by 112183883 on 2007-3-16 at 03:49 PM ]
|
|