IP 日志记录器






3.31/5 (8投票s)
这个程序会跟踪您不断变化的IP地址。
引言
我的互联网服务提供商给我一个静态IP地址,但会不断更改它。这使得我很难从工作场所远程访问我的家用电脑。这个简单的程序旨在解决跟踪您不断变化的IP地址的问题。
Using the Code
这个程序由两个组件组成
- 一个 ASP 页面 (IpLogger.aspx),它会将您的当前 IP 记录到 SQL 数据库中。该页面还会显示您的当前 IP。该页面必须部署到可公开访问的服务器上。IpLogger.aspx.vb 页面的代码背后有一个名为
GetConnectionString()
的函数,它指向存储 IP 日志信息的数据库。可以使用此文件创建数据库:Schema.sql。 - 一个 Windows 脚本文件。该脚本将定期访问 ASP 页面。它必须在您的家用电脑上使用 Windows 计划任务进行安排。脚本文件使用以下 URL 保存 IP:http://<myservername>/MyServer/IpLogger.aspx?server=server1&save=1。
要查看您当前的 IP 地址和历史记录,请在浏览器中打开此页面:http://<myservername>/MyServer/IpLogger.aspx?server=server1。
数据库架构
CREATE DATABASE IpLogger
GO
USE IpLogger
GO
CREATE TABLE [dbo].[IpLog] (
[LogId] [int] IDENTITY (1, 1) NOT NULL PRIMARY KEY CLUSTERED,
[IpAddress] [varchar] (50) NOT NULL ,
[ServerName] [varchar] (50) NULL ,
[AccessTime] [datetime] NOT NULL DEFAULT (getdate())
) ON [PRIMARY]
GO
IpLogger.aspx.vb 页面的代码背后
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Load
If Request.QueryString("save") <> "" Then
SaveIP(Request.QueryString("server"))
Response.Write("OK")
Response.End()
ElseIf Request.QueryString("delete") <> "" Then
DeleteServer(Request.QueryString("server"))
Response.Write("OK")
Response.End()
End If
Dim sSql As String = "SELECT IpAddress, MIN(AccessTime) AS _
EffectiveOn FROM IpLog " & _
" WHERE ServerName = '" &
Request.QueryString("server") & "'" & _
" GROUP BY IpAddress ORDER BY IpAddress DESC"
GridView1.DataSource = GetDataReader(sSql)
GridView1.DataBind()
End Sub
Private Sub DeleteServer(ByVal sServerName As String)
Dim sSql As String = "DELETE FROM IpLog WHERE ServerName = '" & sServerName & "'"
ExecuteCommand(sSql)
End Sub
Private Sub SaveIP(ByVal sServerName As String)
Dim sId As String = Request.ServerVariables("remote_addr")
Dim sSql As String = "INSERT INTO IpLog _
(IpAddress, ServerName) VALUES ('" & sId & "', '" & sServerName & "')"
ExecuteCommand(sSql)
End Sub
Private Function GetDataReader(ByVal sSql As String) As OleDbDataReader
Dim sConnection As String = GetConnectionString()
Dim cn As New OleDbConnection(sConnection)
Dim cmd As New OleDbCommand(sSql, cn)
cn.Open()
Try
Return cmd.ExecuteReader(Data.CommandBehavior.CloseConnection)
Catch ex As Exception
Throw New Exception(ex.Message & "
SQL: " & Replace(sSql, vbCrLf, "
"))
End Try
End Function
Private Sub ExecuteCommand(ByVal sSql As String)
Dim cn As New OleDbConnection(GetConnectionString())
Dim cmd As New OleDbCommand(sSql, cn)
cn.Open()
Try
cmd.ExecuteNonQuery()
Catch ex As Exception
Throw New Exception(ex.Message & "; SQL: " & sSql)
End Try
cn.Close()
End Sub
Private Function GetConnectionString() As String
Return "Provider=SQLOLEDB.1;Password=xxxxx;_
Persist Security Info=True;User ID=sa;Initial Catalog=IpLogger;Data Source=."
End Function
Windows 脚本文件:LogIP.vbs
'To View IP History in browser http://MyServer/IpLogger/Default.aspx?server=server1
'To Save IP
GetUrlData "http://MyServer/IpLogger/Default.aspx?server=server1&save=1"
Function GetUrlData(sUrl)
Dim oHttp
Set oHttp = CreateObject("MSXML2.ServerXMLHTTP")
oHttp.setTimeouts 0, 0, 0, 0
oHttp.Open "GET", sUrl, False
oHttp.send
GetUrlData = oHttp.responseText
Set oHttp = Nothing
End Function
历史
- 2009年2月15日:初始发布