Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » RasPPPOE в виде службы (WinXP)

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

WRFan



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Использую RasPPPOE для подключения к нету. для того, чтобы комп автоматически соединялся с провом, засунул dialup линк в startup папку. всё работало 3 недели, при старте виндов комп автоматически подключался к прову. и вдруг перестал. соединение вручную путём doubleclick-а проходит без проблем. но не автоматически при старте. в чём может быть проблема?
 
но я всё равно собирался стартовать raspppoe как службу. использовал программу Srvany для создания службы и подправил реестр. теперь комп при старте winXP автоматически подключается к прову. но если отключить службу через менеджер служб или через коммандную строку "net stop ArcorRaspppoe", то служба отключается, а соединение с провом нет! остаюсь подключённом к интернету и поэтому не получаю новой айпишник, а иногда это надо. отключиться от прова могу только через комманду "rasphone -h arcor". Т.е. при старте службы подключение к интернету происходит, а при отключении службы - не отсоединяется.
 
написал вот пару файликов для переподключения к нету (batch и vbs), но хотелось бы просто использовать "net stop servicename" и чтобы при этом и internet connection отключалась. как службу то для этого конфигурировать в реестре?
 
batch restart internet connection:
 

Код:
 
net stop arcorraspppoe
rasphone -h arcor
:# How long to sleep for in seconds:
:# Set sleepFor=5
:# Now use ping to sleep
:# Ping -n %sleepFor% localhost >Nul
sleep 5
rasphone -d arcor
 

 
sleep - утилитка от микрозофта для паузы в скриптах
 
VBS restart internet connection:
 

Код:
 
set WshShell = WScript.CreateObject("WScript.Shell")
'Stop the ArcorRaspppoe Service
WshShell.Exec("net stop ArcorRaspppoe")
'Disconnect from Arcor
WshShell.Run "rasphone.exe -h arcor"
'Wait for 6 seconds
WScript.Sleep(6000)
'Reconnect to Arcor
WshShell.Run "rasphone -d arcor"
 

 
и ещё такой вопрос - пров не всегда дёт новой айпишник. почему? иногда надо несколько раз заново переключаться, чтобы айпи изменился. поэтому я и проставил delay в скрипте на 6 секунд. тоже не очень помогает. надо бы wsh скрипт написать, чтобы он проверял, или IP изменилась, если нет, то пусть переключается заново. только я плохо в wsh разбираюсь. кто нибудь может такое написать?

Всего записей: 5275 | Зарегистр. 25-11-2002 | Отправлено: 06:16 16-07-2006
WRFan



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
надо бы wsh скрипт написать, чтобы он проверял, или IP изменилась, если нет, то пусть переключается заново

 
всё таки написал. вот скрипт, может кому понадобится. особенно тем, кто с rapidshare.de качает, там ограничения:
 

Код:
 
' ChangeIP.vbs
' Example VBScript to reconnect the ISP to change IP (for RASPPOE users). Script reconnects until IP changes or user aborts
' Author WRFan http://membres.lycos.fr/julieborette/
' Version 1.0 - July 2006
 
' Microsoft Agent required. Change the script below according to your RASPPPOE service name / Dial-up connection name
 
' Procedures definition Begin

 
Sub MSAgent()
Dim WshShell,WshEnv  
Set WshShell = CreateObject("WScript.Shell")  
set WshEnv = WshShell.Environment("Process")  
SysRoot = WshEnv("SYSTEMROOT")  
'SysDrive = WshEnv("SYSTEMDRIVE")  
'LogonSvr = WshEnv("LOGONSERVER")

 
strAgentName = "Peedy"
strAgentPath =  SysRoot & "\Msagent\Chars\" & strAgentName & ".acs"
Set objAgent = CreateObject("Agent.Control.2")
 
objAgent.Connected = TRUE
objAgent.Characters.Load strAgentName, strAgentPath
Set objCharacter = objAgent.Characters.Character(strAgentName)
 
objCharacter.Show
 
objCharacter.Play "Congratulate"
objCharacter.Speak "Super!!!"
objCharacter.Hide
 
Do While objCharacter.Visible = TRUE
Wscript.Sleep 100
Loop
 
end Sub
 
sub WriteConnectBasic()
 
IP = ""
set WshShell = WScript.CreateObject("WScript.Shell")
Set WMI = GetObject("WinMgmts://")  
Set wmiWin32Comp = WMI.InstancesOf("Win32_NetworkAdapterConfiguration")  
for each NetInfo in wmiWin32Comp  
if NetInfo.IPEnabled then  
For Each IPElement in NetInfo.IPAddress  
IP = IPElement
Next  
end if  
next  
 
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("IpInfoOLD.txt", 2, True)
f.Write (IP)
f.Close
 
'Stop the Raspppoe Service. Set the proper name
WshShell.Exec("net stop ArcorRaspppoe")
'Disconnect from ISP (set name)
WshShell.Run "rasphone.exe -h arcor"
'Wait  
WScript.Sleep(1000)
'Reconnect to ISP (set name)
WshShell.Run "rasphone -d arcor"
'wshShell.Run "%comspec% /c rasphone -d arcor"
WScript.Sleep(10000)
 
NewIP = ""
set WshShell = WScript.CreateObject("WScript.Shell")
Set WMI = GetObject("WinMgmts://")  
Set wmiWin32Comp = WMI.InstancesOf("Win32_NetworkAdapterConfiguration")  
for each NetInfo in wmiWin32Comp  
if NetInfo.IPEnabled then  
For Each IPElement in NetInfo.IPAddress  
NewIP = IPElement
Next  
end if  
next  
 
Dim fso2, f2
Set fso2 = CreateObject("Scripting.FileSystemObject")
Set f2 = fso2.OpenTextFile("IpInfoNew.txt", 2, True)
f2.Write (NewIP)
f2.Close
 
end Sub
 
sub WriteConnectFirst()
WriteConnectBasic()
WScript.Sleep(3000)
end Sub
 
sub WriteReConnect()
strMbox = MsgBox("Old IP, Reconnect?", 4, "Old IP")
If strMbox = 6 Then WriteConnectBasic()
If strMbox = 7 Then WScript.Quit 'WScript.Echo ("Reconnect Aborted")
end Sub
 
' Procedures definition End
 
WriteConnectFirst()
 
do  
 
   Dim fso, f, Msg
   Set fso = CreateObject("Scripting.FileSystemObject")
 
   Set f = fso.OpenTextFile("IpInfoOLD.txt", 1)
   OldIP = f.Read(13)
 
   Dim fso2, f2, Msg2
   Set fso2 = CreateObject("Scripting.FileSystemObject")
 
   Set f2 = fso2.OpenTextFile("IpInfoNew.txt", 1)
   NewIP = f2.Read(13)
 
 
if  OldIP = NewIP then WriteReConnect()
 
 
if  OldIP <> NewIP then MSAgent()
 
loop until  OldIP <> NewIP
 

Всего записей: 5275 | Зарегистр. 25-11-2002 | Отправлено: 13:45 16-07-2006 | Исправлено: WRFan, 14:18 16-07-2006
WRFan



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ещё раз переписал скрипт, добавил проверку службы, автоматически подключающей комп к прову при старте виндов, если служба включена, она отключается теперь через WMI, намного красивее чем раньше (без всяких cmd окон).
 
сравнение старого и нового айпишника теперь осуществляется без записи данных в текст файлы, ох, не дошло до меня тогда, как проставлять глобальные константы - через dim конечно
 
MS Agent уведомление может ещё заменю чем нибудь попроще, слишком уж нагружает комп. пока играешься, пописывая скрипты, не мешает, но в повседневной жизни действует на нервы
 

Код:
 
' ChangeIP.vbs
' Example VBScript to reconnect the ISP to change IP (for RASPPOE users). Script reconnects until IP changes or user aborts
' Author WRFan http://membres.lycos.fr/julieborette/
' Version 1.0 - July 2006
 
' Microsoft Agent required. Change the script below according to your RASPPPOE service name / Dial-up connection name
 
' Procedures definition Begin
dim OldIP
dim NewIP
 
Sub MSAgent()
Dim WshShell,WshEnv  
Set WshShell = CreateObject("WScript.Shell")  
set WshEnv = WshShell.Environment("Process")  
SysRoot = WshEnv("SYSTEMROOT")  
'SysDrive = WshEnv("SYSTEMDRIVE")  
'LogonSvr = WshEnv("LOGONSERVER")  
 
strAgentName = "Peedy"
strAgentPath =  SysRoot & "\Msagent\Chars\" & strAgentName & ".acs"
Set objAgent = CreateObject("Agent.Control.2")
 
objAgent.Connected = TRUE
objAgent.Characters.Load strAgentName, strAgentPath
Set objCharacter = objAgent.Characters.Character(strAgentName)
 
objCharacter.MoveTo 980,690
objCharacter.Show
 
Wscript.Sleep 100
objCharacter.Play "Congratulate"
objCharacter.Speak "Super"
objCharacter.Hide
 
Do While objCharacter.Visible = TRUE
Wscript.Sleep 100
Loop
 
end Sub
 
sub WriteConnectBasic()
 
 
OldIP = ""
set WshShell = WScript.CreateObject("WScript.Shell")
Set WMI = GetObject("WinMgmts://")  
Set wmiWin32Comp = WMI.InstancesOf("Win32_NetworkAdapterConfiguration")  
for each NetInfo in wmiWin32Comp  
if NetInfo.IPEnabled then  
For Each IPElement in NetInfo.IPAddress  
OldIP = IPElement
Next  
end if  
next  
 
 
 
'Stop the Raspppoe Service. Set the proper name
'if CreateObject("Shell.Application").IsServiceRunning("ArcorRaspppoe") = true then WshShell.Exec("net stop ArcorRaspppoe")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\cimv2")
 
Set ServiceName = _
    objWMIService.Get("Win32_Service.Name='ArcorRaspppoe'")
 
if ServiceName.State = "Running" then ServiceName.StopService()
 
'Disconnect from ISP (set name)
WshShell.Run "rasphone.exe -h arcor"
'Wait  
WScript.Sleep(2000)
'Reconnect to ISP (set name)
WshShell.Run "rasphone -d arcor"
'wshShell.Run "%comspec% /c rasphone -d arcor"
WScript.Sleep(5000)
 
NewIP = ""
set WshShell = WScript.CreateObject("WScript.Shell")
Set WMI = GetObject("WinMgmts://")  
Set wmiWin32Comp = WMI.InstancesOf("Win32_NetworkAdapterConfiguration")  
for each NetInfo in wmiWin32Comp  
if NetInfo.IPEnabled then  
For Each IPElement in NetInfo.IPAddress  
NewIP = IPElement
Next  
end if  
next  
 
 
end Sub
 
sub WriteConnectFirst()
WriteConnectBasic()
WScript.Sleep(3000)
end Sub
 
 
sub WriteReConnect()
strMbox = MsgBox("Old IP, Reconnect?", 4, "Old IP")
If strMbox = 6 Then WriteConnectBasic()
If strMbox = 7 Then WScript.Quit 'WScript.Echo ("Reconnect Aborted")
end Sub
 
' Procedures definition End
 
WriteConnectFirst()
 
 
do  
 
'msgbox OldIP & ", " & NewIP
 
 
if  OldIP = NewIP then WriteReConnect()
 
 
if  OldIP <> NewIP then MSAgent()
 
'WshShell.Run "RunDll32.exe %WINDIR%\System32\Msdxm.ocx,RunDll " _
'         & "/play /close tada.wav"
 
loop until  OldIP <> NewIP
 

Всего записей: 5275 | Зарегистр. 25-11-2002 | Отправлено: 01:37 14-12-2006 | Исправлено: WRFan, 09:34 16-12-2006
Spark

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Чувствую скрипт - круть неземная.     По любому спасибо за него, но... Нельзя ли на простом "рабоче-крестьянском" языке описать, тык сказать, "целевую аудиторию" для данного творения? Вот я, к примеру, сижу на московском Стриме, модем ADSL. Подойдет мне этот скрипт?
 
Да - и еще... Там в начале какие-то игры с MS агентом. Это что - всякие мультяшные псинки на экран полезут?

Всего записей: 950 | Зарегистр. 01-10-2003 | Отправлено: 13:38 19-12-2006 | Исправлено: Spark, 13:42 19-12-2006
WRFan



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Там в начале какие-то игры с MS агентом. Это что - всякие мультяшные псинки на экран полезут?

 
да, это так, игрушка. если мс агент проинсталлирован в системе и замена айпишника удалась, то прилетает попугай и кривляется на экране. я ещё раз переписал скрипт (см. внизу) и заменил эту ерунду обычным боксом с уведомлением об успешной замене IP. в противном случае появляется диалог с предложением ещё раз попробовать.  
 

Цитата:
Нельзя ли на простом "рабоче-крестьянском" языке описать, тык сказать, "целевую аудиторию" для данного творения? Вот я, к примеру, сижу на московском Стриме, модем ADSL. Подойдет мне этот скрипт?  

 
он подходит ко всем компьютерам с прямым подключением к интернету (RAS - Dial-Up Networking service - http://www.ss64.com/nt/rasphone.html ).  RasPPPOE в общем то даже не нужен, хотя эта компонента лучше действует, чем микрозофтские.
 
единственное, нужно добавить в скрипт название вашего RAS коннекта (прописано в Control Panel -> Networking, если вы случайно забыли  )
 
с router-ом работать не будет, понятное дело. При использовании router-а нужно через сам router менять внешний айпишник.
 
весь скрипт теперь на WQL-е построен. нечего гадать, сколько времени понадобится для дисконнекта и реконнекта, если можно отмониторить процесс с помощью WMI Event классов  
 
будут вопросы, пишите сразу в пм.
 

Код:
 
' ChangeIP.vbs
' Example VBScript to reconnect the ISP to change IP. Script reconnects until IP changes or user aborts
' Author WRFan http://membres.lycos.fr/julieborette/
' Version 2.0 - December 2006
 
dim objWMIService
dim WshShell
dim IP(2)
dim DialUp
 
DialUp = "xxx" 'Set the name of your Dial-Up Connection
 
set WshShell = WScript.CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:\root\cimv2")
 
sub Reconnect()
Set colItems = objWMIService.ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objItem in colItems
For Each strAddress in objItem.IPAddress
IP(0) = strAddress
Next
Next
Set colItems = nothing
 
 
Call WshShell.Run("rasphone.exe -h " & DialUp)
Set colProcess = objWMIService.ExecNotificationQuery("Select * From __InstanceDeletionEvent Within 1 Where TargetInstance ISA 'Win32_Process'")
do
Set objLatestEvent = colProcess.NextEvent
if objLatestEvent.TargetInstance.name = "rasphone.exe" then
Set objLatestEvent = nothing
set colProcess = nothing
exit do
end if
loop
 
 
Call WshShell.Run("rasphone.exe -d " & DialUp)
Set colProcess = objWMIService.ExecNotificationQuery("Select * From __InstanceDeletionEvent Within 1 Where TargetInstance ISA 'Win32_Process'")
do
Set objLatestEvent = colProcess.NextEvent
if objLatestEvent.TargetInstance.name = "rasphone.exe" then
Set objLatestEvent = nothing
set colProcess = nothing
exit do
end if
loop
 
Set colItems = objWMIService.ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objItem in colItems
For Each strAddress in objItem.IPAddress
IP(1) = strAddress
Next
Next
Set colItems = nothing
 
if IP(0) <> IP(1) then
wscript.echo "IP Change Complete!"
WScript.Quit
else
ReConnectQuestion()
end if
end sub
 
sub ReConnectQuestion()
strMbox = MsgBox("Old IP, Reconnect?", 4, "Old IP")
If strMbox = 6 Then  
Reconnect()
else
WScript.Quit
end if
end Sub
 
Reconnect()
 

 
 

Всего записей: 5275 | Зарегистр. 25-11-2002 | Отправлено: 17:07 29-12-2006 | Исправлено: WRFan, 17:13 29-12-2006
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » RasPPPOE в виде службы (WinXP)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru