VBScript를 사용하여 ping 대기 시간을 테스트하고 특정 지점을 초과하는 경우 다른 VBScript (이 부분 포함)를 실행합니다.

제임스 B

백 스토리 : 저는 호주의 ISP에서 일하고 있습니다. 도매 네트워크 제공 업체가 혼잡하고 즉각적인 해결책이 없습니다. ADSL 연결에서 PPPoE를 다시 연결하면 일시적으로 문제가 해결됩니다 (효과적으로 모뎀을 계속 재부팅하거나 대기 시간이 3000ms 이상으로 급증해야합니다).

지금까지 VBScript를 작성하여 모뎀에 텔넷을 연결하고 로그인하고 WAN을 재설정했습니다. 이는 모뎀을 재부팅하는 것과 동일한 완화 기능을 제공합니다 (새로운 반경 인증 세션 및 WAN IP).

Option explicit
Dim oShell
set oShell= Wscript.CreateObject("WScript.Shell")
oShell.Run "telnet"
WScript.Sleep 1000
oShell.Sendkeys "open 192.168.1.1~"
WScript.Sleep 1000
oShell.Sendkeys "admin~"
WScript.Sleep 1000
oShell.Sendkeys "wan adsl reset~"
WScript.Sleep 7000
oShell.Sendkeys "exit~"
WScript.Sleep 2000
oShell.Sendkeys "q~"
WScript.Sleep 1000
oShell.Sendkeys "q~"
Wscript.Quit

내가 지금 찾고있는 것은 지속적으로 실행되는 또 다른 스크립트를 얻는 것입니다. 그것은 구글의 DNS 8.8.8.8을 핑할 것입니다. 그리고 만약 10 개의 연속 핑이 1000ms 정도의 대기 시간을 가지고 있다고 말하면, 이미 수행하기 위해 작성한 스크립트를 실행하기 위해 말했습니다. PPPoE를 다시 연결합니다. (해당 스크립트는 이미 자체적으로 작동합니다)

이상적으로는 스크립트가 약. 재부팅 스크립트를 실행하는 동안 30 초 후 ping 테스트를 재개합니다 (재부팅 스크립트 실행 후 완료되지 않고 계속 실행되기를 원함).

스크립트가 실행되면 Windows 가상 머신에서 계속 실행되도록하는 것이 의도입니다 (스크립트가 작동하면 처리 할 수있는 부분).

제 문제는 저는 프로그래머가 아니고 온라인 검색을 아무 소용이 없었으며 (CSV 또는 txt 파일로 출력하는 스크립트 만) 온라인에서 찾을 수있는 스크립트를 조정하거나 잠식하지 못했습니다.

나보다 코딩 경험이 더 많은 사람이이 작업을 도와 줄 수 있습니까? 누군가의 의견에 미리 감사드립니다 =)

제임스 B

그래서이 글은 그다지 관심을 끌지 못했지만 해결책을 마련하고 누군가에게 유용 할 수있는 드문 기회를 공유 할 것이라고 생각했습니다.

최소한 패킷 손실이나 기타 대기 시간 문제와 같은 다른 증상이 발생하면 모뎀 재부팅을 수행하도록 조정할 수 있습니다. 또한 모뎀 IP 주소 및 텔넷 로그인 암호와 일치하도록 코드를 조정해야합니다.

또한 모뎀에 로그인 할 수없고 텔넷을 통해 재부팅 등을 수행 할 수없는 경우 (Windows 컴퓨터에서 "텔넷 클라이언트"를 활성화 한 후 명령 프롬프트에서 테스트하고 필요한 경우 google)이 코드는 작동합니다. 나는 이것을 지원하는 TP-Link 8817을 사용하고 있습니다.

코드의 메모에서 언급했듯이 Windows Virtual Machine에서 실행할 목적으로이 코드를 작성했습니다. 따라서 VBScript로 작성되었습니다. 다른 프로그래밍 언어로 약간 조정하면 Linux 라우터에서 쉽게 실행되는 것을 볼 수 있습니다. 도대체 확실하지는 않지만 이것은 Windows 서버 에디션에서 바로 작동 할 수 있습니다.

나는 이것이 누군가에게 도움이되기를 바랍니다.

코드:

'#####################################################################
'#This VBScript will continually ping a destination of choice        #
'#If 10 consecutive packets are received OK                          #
'#Will sleep 10 seconds and pings again                              #
'#If 10 consecutive packets are lost, or have latency over 2000ms    #
'#Will open shell, telnet into modem and reset WAN connection        #
'#Will then sleep 60 seconds for re-auth with ISP and resume pinging #
'#                                                                   #
'#Intended use in Windows VM so PC use won't interrupt Sendkeys input#
'#If in different programming language, could run on my linux router #
'#If done, re-auth method (Else function) would need to be changed   #
'#                                                                   #
'#A 24/7 ping uses 165.888Mb quota per month upload+download         #
'#Estimating minus in-code "sleep" time could use ~100mb depending   #
'#####################################################################

Option Explicit

Dim strHost
strHost = "8.8.8.8"

'#Define destination for ping test

PingForever strHost

Sub PingForever(strHost)

    Dim Output, Shell, strCommand, ReturnCode

    Set Output = CreateObject("Scripting.FileSystemObject")
    Set Shell = CreateObject("wscript.shell")

    strCommand = "ping -n 10 -w 2000 " & strHost

'#Threshold of 10 consecutive pings with 2000ms response time

    While(True)
        ReturnCode = Shell.Run(strCommand, 0, True)     
        If ReturnCode = 0 Then
            WScript.Sleep 10000 

'#If within above threshold, waits 10 seconds before resuming ping test

        Else
        Dim oShell
        set oShell= Wscript.CreateObject("WScript.Shell")

            oShell.Run "telnet"
            WScript.Sleep 1000
            oShell.Sendkeys "open 192.168.1.1~"
            WScript.Sleep 1000
            oShell.Sendkeys "admin~"
            WScript.Sleep 1000
            oShell.Sendkeys "wan adsl reset~"
            WScript.Sleep 10000
            oShell.Sendkeys "exit~"
            WScript.Sleep 3000
            oShell.Sendkeys "q~" 
            WScript.Sleep 1000
            oShell.Sendkeys "q~"
            WScript.Sleep 60000

'#If outside threshold, open shell, telnet into modem and reset WAN
'#Then close shell and wait 60sec for ISP re-authentication

    End If
        Wscript.Sleep 1000
    Wend
    wScript.echo "Script Ended? :("

'#Script shouldn't end if running as intended, basically an error message

End Sub

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관