|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Работа с циклом |
|
|
CMD/BAT - [решено] Работа с циклом
|
Новый участник Сообщения: 19 |
Профиль | Отправить PM | Цитировать Всем доброго времени суток!
Господа, в продолжении темы http://forum.oszone.net/thread-349049.html. Навоял вот такую штуку, но она не спешит работать, подскажите пожалуйста, где косяк? Все наверняка очень плохо, и проблемы с синтаксисом. Идея заключается в том чтобы забирать из текстового файла IP адреса, и подставлять их в цикл, для автоматического удаленного заведения пользователей сразу на нескольких удаленных ПК. echo off echo Введите имя пользователя set /p username= echo Введите пароль set /p password= echo Введите имя нового пользователя set /p newuser= echo Введите пароль нового пользователя set /p newpass= rem количество переменных (ip) считывается из файла for /f "usebackq" %%S in (`find /c /v ""^<"ip.txt"`) do (set /a NumStr=%%S) rem забирает в переменную ipinfile значение из файла IP.txt :M2 if [NOT] NumStr = 0 goto M0 goto M1 :M0 for /f "skip=%NumStr% - 1" %%A IN ("IP.txt") do (set "ipinfile=%%~A"&&goto:M3) :M3 set /a NumStr = NumStr - 1 wmic /user:"%username%" /password:"%password%"/node:"%ipinfile%" process call create "cmd /c net user %newuser% /add" wmic /user:"%username%" /password:"%password%"/node:"%ipinfile%" process call create "cmd /c net user %newuser% %newpass%" wmic /user:"%username%" /password:"%password%"/node:"%ipinfile%" process call create "cmd /c net localgroup Администраторы %newuser% /add" wmic /user:"%username%" /password:"%password%"/node:"%ipinfile%" process call create "cmd /c net localgroup Administrators %newuser% /add" goto M2 :M1 pause |
|
Отправлено: 08:45, 25-06-2021 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Nilf, чем больше вы будете усложнять код и себе работу тем больше у вас будет проблем и непонимания
зачем вот это Цитата Nilf:
|
|
Отправлено: 11:01, 25-06-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Ядрёны поммидоры, а зачем goto? И зачем перебирать файл с ip для выяснения количества оных, если все равно используются все?
Особо доставило вот это вот: for /f "skip=%NumStr% - 1" %%A IN ("IP.txt") do (set "ipinfile=%%~A"&&goto:M3) :M3 set /a NumStr = NumStr - 1 Это я, извините, на эмоциях написал, но оно - правда. Теперь собственно к делу, из скрипта удаляем к лешему начиная с rem количество переменных (ip) считывается из файла до pause, оставляем только это: for /f %%A IN ("IP.txt") do ( set "ipinfile=%%~A" wmic /user:"%username%" /password:"%password%"/node:"%ipinfile%" process call create "cmd /c net user %newuser% /add" wmic /user:"%username%" /password:"%password%"/node:"%ipinfile%" process call create "cmd /c net user %newuser% %newpass%" wmic /user:"%username%" /password:"%password%"/node:"%ipinfile%" process call create "cmd /c net localgroup Администраторы %newuser% /add" wmic /user:"%username%" /password:"%password%"/node:"%ipinfile%" process call create "cmd /c net localgroup Administrators %newuser% /add" ) Протестить негде, но вроде как если всё остальное в порядке - должно работать. еще один момент, вот это тоже является лишним, т.к. можно %%~A подставлять прямо в строчки с wmic, но это уже на усмотрение ТСа. alpap, согласен. Судя по тому что ТС пытается сделать - у него одноранговая сеть с одинаковой учеткой с правами администратора на хостах, но я откровенно устал писать что запуск подобной, эмммм... автоматизации в одноранговой сети штука довольно спорная и геморная, если так уж хочется выстрелить себе в ногу - кто я такой чтобы мешать? В конце концов сами мы тоже когда-то по граблям ходили, однако помочь с мягкими насадками на рукоять - в наших силах. Ну и насчет насадок на грабли: есть такая хорошая и полезная штука как ansible - с ней возня в одноранговой сети (если уж нет возможности AD) становится чуть менее болезненной. |
Последний раз редактировалось Elven, 25-06-2021 в 11:18. Отправлено: 11:12, 25-06-2021 | #3 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:15, 25-06-2021 | #4 |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Ок. Понял.
Пример файла IP.txt: 192.168.31.1 192.168.31.2 192.168.31.3 192.168.31.4 .... Т.е. происходит банальное перечисление IP адресов на которые нужно отправить команду о добавлении нового пользователя. одна строка - один IP. Идея была такова что считается количество строк из файла, это значение подставляется в цикл, и по итог когда это значение придет к нулю (т.е. закончиться перебор всех строк) исполнение файла заканчивается. Цитата:
|
||
Отправлено: 11:27, 25-06-2021 | #5 |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Цитата Elven:
Цитата:
|
||
Отправлено: 12:03, 25-06-2021 | #6 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата Nilf:
Цитата Nilf:
192.168.31.1,Vasya,1234 192.168.31.1,Petya,5678 192.168.31.1,Olya,4321 192.168.31.2,Oleg,A1B1C1 иначе надо составлять файл примерно так: Vasya,1234,192.168.31.1,net user UserNew1 Petya,5678,192.168.31.1,net user UserNew2 3476 Olya,4321,192.168.31.1,net localgroup Администраторы UserN Oleg,A1B1C1,192.168.31.2,net localgroup Administrators NewUser2 |
||
Последний раз редактировалось alpap, 25-06-2021 в 12:48. Отправлено: 12:27, 25-06-2021 | #7 |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Цитата alpap:
|
|
Отправлено: 13:17, 25-06-2021 | #8 |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Цитата Elven:
Видимо если в такой последовательности, то получается что скрипт не стучится по заданному адресу, а пытается выполниться на локальном компе. |
|
Отправлено: 15:14, 25-06-2021 | #9 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать у меня нет под рукой cmd чтобы проверить наверняка. больше всего похоже на какие-то грабли с переменной/переменными.
для проверки значения можно вывести все используемые переменные, например так: ну и так далее. но скорей всего дело в set, вроде бы в нем кавычки не нужны, т.е. |
Отправлено: 15:24, 25-06-2021 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Циклом выполнить GET curl | mulrus | Скриптовые языки администрирования Windows | 3 | 07-08-2018 18:15 | |
CMD/BAT - Работа с циклом в BAT файле | mforim | Скриптовые языки администрирования Windows | 1 | 31-12-2017 18:32 | |
CMD/BAT - [решено] Помогите разобраться с циклом | Andrei_IW | Скриптовые языки администрирования Windows | 9 | 11-07-2016 10:09 | |
PowerShell - Проблема с циклом | tuguror | Скриптовые языки администрирования Windows | 8 | 19-09-2015 17:39 | |
Нужна помощь: Не могу справится с циклом | killer.bin | AutoIt | 1 | 09-06-2009 14:42 |
|