1楼、2楼是举例ping,要是telnet呢?譬如 telnet 192.168.1.1 username:admin password:1234 en ...... disp cu 将显示结果存入temp.txt,再读取txt文件,根据情况再在telnet中执行 ping 192.168.1.2 ......
这个貌似要通过协议来操作的,不知道有没有现成的api可以操作。
'ping的 Global PortDone As Integer Global OnPort As LongPublic Const WSA_DESCRIPTIONLEN = 256 Public Const WSA_DescriptionSize = WSA_DESCRIPTIONLEN + 1 Public Const WSA_SYS_STATUS_LEN = 128 Public Const WSA_SysStatusSize = WSA_SYS_STATUS_LEN + 1Type Inet_address Byte4 As String * 1 Byte3 As String * 1 Byte2 As String * 1 Byte1 As String * 1 End Type Type WSAdata wVersion As Integer wHighVersion As Integer szDescription(0 To 255) As Byte szSystemStatus(0 To 128) As Byte iMaxSockets As Integer iMaxUdpDg As Integer lpVendorInfo As Long End Type Type Hostent h_name As Long h_aliases As Long h_addrtype As Integer h_length As Integer h_addr_list As Long End TypeType IP_OPTION_INFORMATION TTL As Byte Tos As Byte flags As Byte OptionsSize As Long OptionsData As String * 128 End Type Type IP_ECHO_REPLY Address(0 To 3) As Byte Status As Long RoundTripTime As Long DataSize As Integer Reserved As Integer Data As Long Options As IP_OPTION_INFORMATION End Type
Public pIPe As IP_ECHO_REPLY Public pIPe2 As IP_ECHO_REPLY Public pIPe3 As IP_ECHO_REPLY Public pIPo As IP_OPTION_INFORMATION Public pIPo2 As IP_OPTION_INFORMATION Public pIPo3 As IP_OPTION_INFORMATION Public IPLong As Inet_address Public IPLong2 As Inet_address Public IPLong3 As Inet_address Public IPLong4 As Inet_address Public IPLong5 As Inet_address Public IPLong6 As Inet_address Public IPLong7 As Inet_address
Declare Function WSAStartup Lib "wsock32.dll" (ByVal wVersionRequired&, lpWSAData As WSAdata) As Long Public Declare Function IcmpSendEcho Lib "ICMP" (ByVal IcmpHandle As Long, ByVal DestAddress As Long, _ ByVal RequestData As String, ByVal RequestSize As Integer, RequestOptns As IP_OPTION_INFORMATION, _ ReplyBuffer As IP_ECHO_REPLY, ByVal ReplySize As Long, ByVal timeout As Long) As BooleanDeclare Function gethostname Lib "wsock32.dll" (ByVal hostname$, HostLen&) As Long Declare Function gethostbyname& Lib "wsock32.dll" (ByVal hostname$) Declare Function WSAGetLastError Lib "wsock32.dll" () As Long Declare Function WSACleanup Lib "wsock32.dll" () As Long Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long) Public Declare Function IcmpCreateFile Lib "ICMP.dll" () As Long Public Declare Function IcmpCloseHandle Lib "ICMP.dll" (ByVal HANDLE As Long) As BooleanFunction ScanPort(thePort As Long, ws1 As Winsock) As Boolean ScanPort = False On Error GoTo gotport ws1.Close ws1.LocalPort = thePort ws1.Listen Pause 0.1 ws1.Close Exit Function gotport: If Err.Number = 10048 Then ScanPort = True End If End Function Sub Pause(Interval) 'Pauses for a given time Dim Current
Current = Timer Do While Timer - Current < Val(Interval) DoEvents Loop End Sub
telnet 192.168.1.1
username:admin
password:1234
en
......
disp cu
将显示结果存入temp.txt,再读取txt文件,根据情况再在telnet中执行
ping 192.168.1.2
......
Global PortDone As Integer
Global OnPort As LongPublic Const WSA_DESCRIPTIONLEN = 256
Public Const WSA_DescriptionSize = WSA_DESCRIPTIONLEN + 1
Public Const WSA_SYS_STATUS_LEN = 128
Public Const WSA_SysStatusSize = WSA_SYS_STATUS_LEN + 1Type Inet_address
Byte4 As String * 1
Byte3 As String * 1
Byte2 As String * 1
Byte1 As String * 1
End Type
Type WSAdata
wVersion As Integer
wHighVersion As Integer
szDescription(0 To 255) As Byte
szSystemStatus(0 To 128) As Byte
iMaxSockets As Integer
iMaxUdpDg As Integer
lpVendorInfo As Long
End Type
Type Hostent
h_name As Long
h_aliases As Long
h_addrtype As Integer
h_length As Integer
h_addr_list As Long
End TypeType IP_OPTION_INFORMATION
TTL As Byte
Tos As Byte
flags As Byte
OptionsSize As Long
OptionsData As String * 128
End Type
Type IP_ECHO_REPLY
Address(0 To 3) As Byte
Status As Long
RoundTripTime As Long
DataSize As Integer
Reserved As Integer
Data As Long
Options As IP_OPTION_INFORMATION
End Type
Public pIPe As IP_ECHO_REPLY
Public pIPe2 As IP_ECHO_REPLY
Public pIPe3 As IP_ECHO_REPLY
Public pIPo As IP_OPTION_INFORMATION
Public pIPo2 As IP_OPTION_INFORMATION
Public pIPo3 As IP_OPTION_INFORMATION
Public IPLong As Inet_address
Public IPLong2 As Inet_address
Public IPLong3 As Inet_address
Public IPLong4 As Inet_address
Public IPLong5 As Inet_address
Public IPLong6 As Inet_address
Public IPLong7 As Inet_address
Declare Function WSAStartup Lib "wsock32.dll" (ByVal wVersionRequired&, lpWSAData As WSAdata) As Long
Public Declare Function IcmpSendEcho Lib "ICMP" (ByVal IcmpHandle As Long, ByVal DestAddress As Long, _
ByVal RequestData As String, ByVal RequestSize As Integer, RequestOptns As IP_OPTION_INFORMATION, _
ReplyBuffer As IP_ECHO_REPLY, ByVal ReplySize As Long, ByVal timeout As Long) As BooleanDeclare Function gethostname Lib "wsock32.dll" (ByVal hostname$, HostLen&) As Long
Declare Function gethostbyname& Lib "wsock32.dll" (ByVal hostname$)
Declare Function WSAGetLastError Lib "wsock32.dll" () As Long
Declare Function WSACleanup Lib "wsock32.dll" () As Long
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Public Declare Function IcmpCreateFile Lib "ICMP.dll" () As Long
Public Declare Function IcmpCloseHandle Lib "ICMP.dll" (ByVal HANDLE As Long) As BooleanFunction ScanPort(thePort As Long, ws1 As Winsock) As Boolean
ScanPort = False
On Error GoTo gotport
ws1.Close
ws1.LocalPort = thePort
ws1.Listen
Pause 0.1
ws1.Close
Exit Function
gotport:
If Err.Number = 10048 Then
ScanPort = True
End If
End Function
Sub Pause(Interval)
'Pauses for a given time
Dim Current
Current = Timer
Do While Timer - Current < Val(Interval)
DoEvents
Loop
End Sub