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

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

Ответить
Настройки темы
CMD/BAT - [решено] Перебор адресов для подключения

Аватара для root221

Старожил


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

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


Здравcтвуйте, нужно решить задачу

Вот код, который нужно изменить так, чтоб переменная IP бралась из списка ip.txt и по нажатию Enter нужно отключиться от VPN и подключиться к следующему IP из файла, логин и пароль на всех компьютерах одинаковый.



Код: Выделить весь код
@echo off

setlocal ENABLEDELAYEDEXPANSION
set conn="lan"
set login="lan"
set pass="lan"

set ip=192.168.10.1

rasdial | find %conn%
if Errorlevel 1 (
    rasdial %conn% %login% %pass% /phone:%ip% > nul
    if !Errorlevel!==623 echo Подключения нет, нужно создавать
    if !Errorlevel!==691 echo Ошибка в логине и пароле
    if !Errorlevel!==0 echo %ip% подключились

) else (
	@rasdial 1 /disconnect
)
endlocal
pause
Список адресов храню в следующем формате

Код: Выделить весь код
192.168.10.1
192.168.10.2
192.168.10.3
192.168.10.4
192.168.10.5

Отправлено: 02:45, 16-10-2021

 

Ветеран


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

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


Код: Выделить весь код
for /f "usebackq delims=" %%i in ("ip.txt") do (
	rasdial | find.exe %conn% && (
		rasdial 1 /disconnect
	) || (
		>nul rasdial %conn% %login% %pass% /phone:%%~i
		if !Errorlevel!==623 echo Подключения нет, нужно создавать
		if !Errorlevel!==691 echo Ошибка в логине и пароле
		if !Errorlevel!==0 echo %%~i подключились
	)
)
вместо:
Код: Выделить весь код
set ip=192.168.10.1

rasdial | find %conn%
if Errorlevel 1 (
    rasdial %conn% %login% %pass% /phone:%ip% > nul
    if !Errorlevel!==623 echo Подключения нет, нужно создавать
    if !Errorlevel!==691 echo Ошибка в логине и пароле
    if !Errorlevel!==0 echo %ip% подключились

) else (
	@rasdial 1 /disconnect
)
Не проверялось.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:40, 16-10-2021 | #2



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

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


Ветеран


Contributor


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

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


Еще варианты: организовать Ваш код в виде процедуры и в цикле её вызывать:
Код: Выделить весь код
@Echo Off
cls
setlocal ENABLEDELAYEDEXPANSION
	set conn="lan"
	set login="lan"
	set pass="lan"

	For /F "usebackq delims=" %%p In ("Z:\Box_In\ip.txt") Do Call :IP %%p

endlocal
pause
Exit /B

:IP
	Echo +++ IP=%1
	set "ip=%1"
	rasdial | find %conn%
	if Errorlevel 1 (
    		rasdial %conn% %login% %pass% /phone:%ip% > nul
    		if !Errorlevel!==623 echo Подключения нет, нужно создавать
    		if !Errorlevel!==691 echo Ошибка в логине и пароле
    		if !Errorlevel!==0 echo %ip% подключились

	) else (
		@rasdial 1 /disconnect
	)
Exit /B
В принципе не вижу смысла в отдельном ip.txt файле.
Код: Выделить весь код
@Echo Off
cls
setlocal ENABLEDELAYEDEXPANSION
	set conn="lan"
	set login="lan"
	set pass="lan"

	Call :IP 192.168.10.1
	Call :IP 192.168.10.2
	Call :IP 192.168.10.3
	Call :IP 192.168.10.4
	Call :IP 192.168.10.5

endlocal
pause
Exit /B
Процедура :IP та же.
Красным Выделил куски Вашего кода, которые мной не отлаживались.
Вот вариант с возможностью указывать логины пароли для каждого соединения
Код: Выделить весь код
@Echo Off
cls
	Rem Call :Ip IP "conn" "login" "pass" 

	Call :IP 192.168.10.1 "lan" "lan" "lan"
	Call :IP 192.168.10.2 "lan" "lan" "lan"
	Call :IP 192.168.10.3 "lan" "lan" "lan"
	Call :IP 192.168.10.4 "lan" "lan" "lan"
	Call :IP 192.168.10.5 "lan" "lan" "lan"
pause
Exit /B

:IP
	Echo +++ IP=%1
	rasdial | find %2 && (@rasdial 1 /disconnect &Exit /B)

    	>nul rasdial %2 %3 %4 /phone:%1 > nul
    	If %Errorlevel%==623 Echo Подключения нет, нужно создавать
    	If %Errorlevel%==691 Echo Ошибка в логине и пароле
    	If %Errorlevel%==0 Echo %1 подключились
Exit /B

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


Последний раз редактировалось megaloman, 17-10-2021 в 15:18.

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

Отправлено: 16:02, 16-10-2021 | #3



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Перебор жетских дисков в системе, запуск утилиты для каждого из них totopolis Скриптовые языки администрирования Windows 5 21-09-2016 20:41
Базы URL Адресов! Для ISA Server Joni ISA Server / Microsoft Forefront TMG 2 27-05-2011 01:15
Вопрос - Базы URL Адресов! Для ISA Server Joni Защита компьютерных систем 0 26-05-2011 11:52
whois для списка адресов dascon Вебмастеру 4 10-01-2005 01:57




 
Переход