中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]网络神探运行状态查看工具
作者:
标题: [原创]网络神探运行状态查看工具 上一主题 | 下一主题
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 ]

2007-3-16 14:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 2 楼』:  

支持!!

2007-3-17 00:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 3 楼』:  

平时很少见到vbs的专帖,顶




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2007-3-17 01:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lwp242
新手上路





积分 6
发帖 2
注册 2007-3-18
状态 离线
『第 4 楼』:  谁能帮编写一个能同步网络文件的VBS文件??

谁能帮编写一个能同步网络文件的VBS文件??我想把我这服务器的一个文件的文件同步到所以的机器里,怎么用VBS脚本实现?在开机的时候同步。

2007-3-18 04:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: