Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Помогите в создании Bat скрипта

Ответить
Настройки темы
CMD/BAT - Помогите в создании Bat скрипта

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте, имеется подключение через vpn к удаленному серверу, по cisco annyconnect, при не активности соединение автоматически разрывается в течении 30 минут. Сейчас имею два скрипта:
Первый запуск подключения
PHP код: Выделить весь код

vpncli.exe -<connect.txt 


в файле connect.txt указаны параметры подключения.

Второй отключение
PHP код: Выделить весь код

vpncli.exe disconnect 


Возможно ли реализовать скрипт, который при запуске первого скрипта будет пинговать заданный узел раз в 5 минут и в случае если пинг не проходит запускать второй скрипт, для разрыва соединения и после чего вновь первый на подключение.

Отправлено: 17:03, 15-04-2019

 

Ветеран


Contributor


Сообщения: 2707
Благодарности: 1684

Профиль | Отправить PM | Цитировать


fimus, откуда берётся ip для пинга? В connect.txt он указан? Каким образом?
Как вариант
Код: Выделить весь код
@Echo Off
        Set "IP=192.168.100.123"
	Set /A Sec=300
:Begin
	Ping %IP% |Find "TTL=" >nul 2>&1 && (TIMEOUT /T %Sec% /NOBREAK &GoTo :Begin)
	vpncli.exe disconnect
	vpncli.exe -s <connect.txt
GoTo :Begin

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 15-04-2019 в 19:28.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:11, 15-04-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Как вариант »
Благодарю, именно то что нужно, а можно реализовать что бы окно работало фоном?

Последний раз редактировалось fimus, 16-04-2019 в 09:58.


Отправлено: 09:52, 16-04-2019 | #3


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата fimus:
что бы окно работало фоном »
тут немало разбиралось.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:00, 16-04-2019 | #4


Аватара для yurfed

Ветеран


Сообщения: 20045
Благодарности: 3122

Профиль | Отправить PM | Цитировать


fimus, вот только непонятно, зачем вам текстовый файл с параметрами подключения?
Всё это можно прописать в скрипт, предложенный megaloman и при условии дисконнекта, подключаться там же, из скрипта, без необходимости вызывать параметры из второго файла. Или я не прав?

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Отправлено: 15:53, 16-04-2019 | #5


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата yurfed:
Или я не прав? »
Думаю что можно, я не очень соображаю как это реализовать и поэтому делаю как мне понятнее. В файле указаны несколько ключей логин и пароль для подключения:

Код: Выделить весь код
connect 192.168.100.123
y
1
044*-*
2qwEr@qwe,Q
y
exit

Отправлено: 16:51, 16-04-2019 | #6


Ветеран


Contributor


Сообщения: 2707
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Цитата fimus:
можно реализовать чтобы окно работало фоном »
Вот .vbs-скрипт. Пропишите пути к Вашим программе и коннект-файлу вместо моих бредовых, и IP
Код: Выделить весь код
HostName = "192.168.100.123"
mSec = 300000
        
PRG = "C:\Windows\System32\notepad.exe"
Con = "Z:\Soft_IN\connect.txt"

Set FSO = CreateObject("Scripting.FileSystemObject")
NotFile FSO,PRG
NotFile FSO,Con

Comm1 = "CMD /C """ + PRG + """ disconnect"
Comm2 = "CMD /C """ + PRG + """ -s <""" + Con + """"

Set WShell = CreateObject("WScript.Shell")

Do
    Set Ping = GetObject("winmgmts:").Get("Win32_PingStatus.Address='" & HostName & "'")
    If Ping.StatusCode = 0 Then
        WScript.Sleep mSec
    Else
        OutRun = WShell.Run(Comm1, 7, True)
        OutRun = WShell.Run(Comm2, 7, True)
    End If
Loop
WScript.Quit 0

Sub NotFile(FSO,f)
    If Not FSO.FileExists(f) Then
        MsgBox "File" + vbCrLf + f + vbCrLf + "not found"
        WScript.Quit 2
    End If
End Sub
Если не поленюсь, переделаю скрипты, чтобы IP брался из файла.
Скрипт можно убить только из диспетчера задач (wscript.exe)

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:05, 16-04-2019 | #7


Ветеран


Contributor


Сообщения: 2707
Благодарности: 1684

Профиль | Отправить PM | Цитировать


IP берётся из файла
CMD
Код: Выделить весь код
@Echo Off
	Set "Prg=vpncli.exe"
	Set "Con=connect.txt"
	Set "IPkey=connect"

	Set /A Sec=300

	FOR /F "usebackq tokens=1,2 delims= " %%i IN ("%Con%") DO If /I "%IPkey%"=="%%i" Set "IP=%%j"
:Begin
	Ping %IP% |Find "TTL=" >nul 2>&1 ||(
		"%Prg%" disconnect
		"%Prg%" -s <"%Con%"
		GoTo :Begin
	)
	TIMEOUT /T %Sec% /NOBREAK
GoTo :Begin
vbs
Код: Выделить весь код
PRG = "C:\Windows\System32\notepad.exe"
Con = "Z:\Soft_IN\connect.txt"
IPkey = "connect"

mSec = 300000

Comm1 = "CMD /C """ + PRG + """ disconnect"
Comm2 = "CMD /C """ + PRG + """ -s <""" + Con + """"

Set FSO = CreateObject("Scripting.FileSystemObject")
NotFile FSO, PRG
NotFile FSO, Con

With FSO.OpenTextFile(Con, 1, False)
    AllTxt = .ReadAll
    .Close
End With
Mas = Split(AllTxt, vbCrLf)
Set Alls = Nothing

For Each iMas In Mas
    HostName = LCase(Replace(iMas, " ", ""))
    If InStr(HostName, LCase(IPkey)) = 1 Then
        HostName = Replace(HostName, LCase(IPkey), "")
        Exit For
    End If
Next
Set Mas = Nothing
' MsgBox HostName

Set WShell = CreateObject("WScript.Shell")

Do
    Set Ping = GetObject("winmgmts:").Get("Win32_PingStatus.Address='" & HostName & "'")
    If Ping.StatusCode = 0 Then
        WScript.Sleep mSec
    Else
        OutRun = WShell.Run(Comm1, 7, True)
        OutRun = WShell.Run(Comm2, 7, True)
    End If
Loop
WScript.Quit 0

Sub NotFile(FSO, f)
    If Not FSO.FileExists(f) Then
        MsgBox "File" + vbCrLf + f + vbCrLf + "not found"
        WScript.Quit 2
    End If
End Sub

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 16-04-2019 в 22:39.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:18, 16-04-2019 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Помогите в создании Bat скрипта

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Запуск ps скрипта из bat скрита pogo Скриптовые языки администрирования Windows 13 10-10-2018 16:18
CMD/BAT - [решено] перезагрузка linux с помощью скрипта .bat nox2 Скриптовые языки администрирования Windows 1 24-03-2016 16:01
PowerShell - Помогите в создании простенького скрипта artlive Скриптовые языки администрирования Windows 2 20-10-2015 15:53
CMD/BAT - Помогите в создании bat файла для запуска игры the_mazix@vk Скриптовые языки администрирования Windows 0 07-06-2014 02:19
CMD/BAT - [решено] Нужна помощь в создании bat-ника для распаковки и переименования файлов/папок Nun-Nun Скриптовые языки администрирования Windows 6 14-05-2009 15:45




 
Переход