Что нового

автоматическая установка соединения

ArchangeL

Новичок
Сообщения
17
Репутация
1
Версия AutoIt: 3.3.6.1

Описание:
Установка автоматического соединения.
Я в этой программе новичок. Поэтому для вас это может показаться
легким решение моей проблемы. :-\

Задача:
1. Что бы установка соединения происходила автоматически после
загрузки через 20 сек.
2. Проверялся ping если нет то повторная установка соединения.
Примечания:
Искал похожие темы не нашел
(решение поставить соединение в startup в винде
с reconnect не устраивает)
я что то попытался сам слепить но уперся в тупик
подскажите может кто уже видел или делал что то подобное
 

HungryDwarf

Новичок
Сообщения
35
Репутация
3
я так понял, тебе нужен реконнект, если пинг не проходит.
тогда так
Код:
Sleep(20000);счетчик сна ожидание 20 сек перед запуском
Run("cmd.exe")
WinWaitActive("C:\WINDOWS\system32\cmd.exe")
Send('rasphone -d "mts"')
Send("{ENTER}")
WinClose("C:\WINDOWS\system32\cmd.exe")
Sleep(10000)
$var = Ping("ukr.net",250)
If $var Then ; если пинг проходит(подключился), то выйти.
	Exit
Else ; если нет, то :
	While $var = 0 ; пока пинг не пройдет
	MsgBox(0, 'Подключение', 'Подключение не удалось! Реконнект через 10 сек.') ; выскакивает сообщение
	Sleep(10000) ; спать 10 сек
	WEnd
EndIf
 
Автор
A

ArchangeL

Новичок
Сообщения
17
Репутация
1
То что надо только вместо:
выхода (если пинг прошел)
можно поставить интервал ожидания (1 час)
потом снова запустить пинг

Спасиб
 

HungryDwarf

Новичок
Сообщения
35
Репутация
3
без проблем :smile:

Код:
Sleep(20000);счетчик сна ожидание 20 сек перед запуском

While 1 ; каждый час будет подключаться
Run("cmd.exe")
WinWaitActive("C:\WINDOWS\system32\cmd.exe")
Send('rasphone -d "mts"')
Send("{ENTER}")
WinClose("C:\WINDOWS\system32\cmd.exe")

Sleep(10000)

$var = Ping("ukr.net",250)
If $var Then 
	sleep(3600000) ; час
Else 
	While $var = 0
	MsgBox(0, 'Подключение', 'Подключение не удалось! Реконнект через 10000 сек.')
	sleep(10000)
	WEnd
EndIf
WEnd


только укр.нет не пингуется че-то :whistle:
 
Автор
A

ArchangeL

Новичок
Сообщения
17
Репутация
1
Протестирую завтра напишу ответ... 8)
 

Arei

Скриптер
Сообщения
938
Репутация
115
Для себя изменил скрипт и работает как часы,вот только как сделать Cmd невидимой
Код:
While 1 ; каждый час будет подключаться
Run("cmd.exe")
WinWaitActive(@Windowsdir&"\system32\cmd.exe")
Sleep(900)
Send("rasphone")
Send("{ENTER}")



Sleep(900)
Send("{ENTER}")
WinClose(@Windowsdir&"\system32\cmd.exe")
Sleep(900)
Send("{ENTER}")

$var = Ping("ukr.net",250)
If $var Then 
    sleep(3600000) ; час
Else 
    While $var = 0
  
    sleep(10000)
    WEnd
EndIf
WEnd



или ещё проще
Код:
While 1 ; каждый час будет подключаться
Run("cmd.exe")
WinWaitActive(@Windowsdir&"\system32\cmd.exe")
Sleep(900)
Send("rasphone")
Send("{ENTER}")



Sleep(900)
Send("{ENTER}")
WinClose(@Windowsdir&"\system32\cmd.exe")
Sleep(1000)
Send("{ENTER}")

 Exit


WEnd
 

HungryDwarf

Новичок
Сообщения
35
Репутация
3
Arei, друг, нафига ты это написал?
в первом ты поправил несколько строчек в моем скрипте, не изменив ничего принципиально.
второй не будет подключатся каждый час, поэтому когда копипастишь потрудился бы хотя бы чужие комментарии убрать.
подправил код под себя - молодец, но оставь его при себе, ладно?
хочется узнать, как скрыть cmd - создавай новую тему.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
rasphone не требует запуска только из командной строки, поэтому все эти манипуляции с cmd, WinWait... и Send можно убрать. и делать сразу
Код:
Run('rasphone "somekeys"')
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
Код:
$mts='mts' ; название соединения (что будем коннектить|реконнектить )
$pathscript = @ScriptFullPath
RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'AutoConnect', "REG_SZ", $pathscript) ; добавит в автозагрузку с Windows

Sleep(1000*20) ; 20 секунд после загрузки Windows

_connect() ; Соединяем

; подключение
Func _connect()
	ShellExecute(@SystemDir&"\rasphone.exe"," -d "&$mts)
EndFunc

While 1
if Ping('google.com') Then
Sleep(1000*60*60) ; пропинговались висим час
Else ; если нет то
_connect() ; переподключаемся
Sleep(1000*20) ; 20 сек. пауза на всякий случай ( не могу проверить сижу на оптике сейчас )
EndIf
WEnd
 

Arei

Скриптер
Сообщения
938
Репутация
115
я свой написал рабочий (хоть как то) потому что ваш скрипт у меня не работал.Друг HungryDwarf
 
Автор
A

ArchangeL

Новичок
Сообщения
17
Репутация
1
Guezt Gutsy сказал(а):
Код:
$mts='mts' ; название соединения (что будем коннектить|реконнектить )
$pathscript = @ScriptFullPath
RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'AutoConnect', "REG_SZ", $pathscript) ; добавит в автозагрузку с Windows

Sleep(1000*20) ; 20 секунд после загрузки Windows

_connect() ; Соединяем

; подключение
Func _connect()
	ShellExecute(@SystemDir&"\rasphone.exe"," -d "&$mts)
EndFunc

While 1
if Ping('google.com') Then
Sleep(1000*60*60) ; пропинговались висим час
Else ; если нет то
_connect() ; переподключаемся
Sleep(1000*20) ; 20 сек. пауза на всякий случай ( не могу проверить сижу на оптике сейчас )
EndIf
WEnd
В этом скрипте все работает правильно (даже очень хорошо) :ok:
Только одна загвоздка при первом соединении выскакивает окно
"Не удалось подключится с помощью этого элемента телефонной книги.
Ошибка 756: Это подключение уже выполнено"
Видимо происходит второй запрос подключения где то в скрипте при первом соединении.
Потому что выскакивает ошибка и практически сразу появляется соединение.
 

beliy

Продвинутый
Сообщения
372
Репутация
72
попробуй заремапить:
Код:
_connect() ; Соединяем

т.э. сделать что б было:
Код:
;_connect() ; Соединяем


или сделать так:

Код:
_connect() ; Соединяем
Sleep(10000) ; 10 секунд пауза, т.к if Ping('google.com') вероятнее выполняется до того как выполнилось полное подключение и соответственно пинга нет
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
ArchangeL
проверить не могу, действительно просто закомментируй первое соединение ;)




Добавлено:
Сообщение автоматически объединено:

beliy
да нет действительно просто убрать вызов функции перед циклом да и все ))) как обычно не хватило в коде
Код:
;
;D
 
Автор
A

ArchangeL

Новичок
Сообщения
17
Репутация
1
Guezt Gutsy сказал(а):
ArchangeL
проверить не могу, действительно просто закомментируй первое соединение ;)




Добавлено:
Сообщение автоматически объединено:

beliy
да нет действительно просто убрать вызов функции перед циклом да и все ))) как обычно не хватило в коде
Код:
;
;D


Щя протестирую напишу ответ.
Ещё как удалить потом из системы
RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'AutoConnect', "REG_SZ", $pathscript) ; добавит в автозагрузку с Windows
Потому что пока тестировал туда поназаписывал старых скриптов и судя по всему они стартуют. :wacko:
(нужно их корректно удалить от туда)
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
ArchangeL [?]
Ещё как удалить потом из системы RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'AutoConnect', "REG_SZ", $pathscript) ; добавит в автозагрузку с WindowsПотому что пока тестировал туда поназаписывал старых скриптов и судя по всему они стартуют. (нужно их корректно удалить от туда)

Открой Regedit перейди на HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run и удали все что ссылаются на твои скрипты.
 
Автор
A

ArchangeL

Новичок
Сообщения
17
Репутация
1
Все проверил! 8)
Все работает идеально без ошибок и проблем :ok:
Соединение устанавливается автоматически после перезагрузки (решено)
Пингует сайт с интервалом в час (решено)
Если нет пинга (делает реконект) (решено)

Огромное спасибо всем кто помог мне с решением моей проблемы.
особенно "Guezt Gutsy"


П.С. Поставлю этот скрипт на компов 20 и понаблюдаю как будет работать.
 

Mancoffee

Свет проталкивает тьму ...
Сообщения
86
Репутация
1
Код:
#include <MsgBoxConstants.au3>
$Pass = "Пароль"
$Ping = Ping ("strim.net.ua", 250)

If $Ping Then
    RunAs(@UserName, @ComputerName, $Pass, 0, 'Rasdial "Название соединения" "Логин" "Пароль"')
	MsgBox($mb_systemmodal, '', "Интернет есть" & @error, 2)
Else
    While $Ping = 0
	MsgBox(0, 'Подключение', 'Соединяем ...', 2)
	WEnd
EndIf

Соединяюсь через VPN. Если выключаю сеть и запускаю скрипт, а потом включаю сеть, то постоянно выполняется второе условие (Else) даже, если пинг уже есть. В чём "косяк"?

П.С. Пингуемый сайт - это сайт провайдера, который всегда работает при подключении к сети (не интернету)
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Почему "всё время" понятно.
Непонятно почему оно туда заходит.
У меня пишет что интернет есть
Код:
$Ping = Ping ("strim.net.ua", 250)
ConsoleWrite(@error&@CR)
If $Ping Then
     MsgBox(0, '', "Интернет есть" & @error, 2)
Else
    MsgBox(0, 'Подключение', 'Соединяем ...', 2)
EndIf
 

Mancoffee

Свет проталкивает тьму ...
Сообщения
86
Репутация
1
Верх