PDA

Показать полную графическую версию : Команда для удаленного запуска bat файла с повышением прав.


НариманБ
02-02-2016, 08:13
Добрый день!

У меня такая ситуация: У меня есть около 50 серверов находящихся в одном домене. Я администратор домена.
Мне необходимо переустановить zabbix_agent, он существует на серверах как служба.
Естественно, я не хочу заходить на каждый сервер и вручную это все делать.
Я сделал пару батников:

Первый копирует необходимый дистрибутив на нужный сервер:
xcopy "C:\zabbix_distr\bin\win64\dev\zabbix_sender.dll" "\\192.168.12.11\c$\Program Files\Zabbix\\bin\win64\dev" /z /y
xcopy "C:\zabbix_distr\bin\win64\dev\zabbix_sender.lib" "\\192.168.12.11\c$\Program Files\Zabbix\bin\win64\dev" /z /y
xcopy "C:\zabbix_distr\bin\win64\zabbix_agentd.exe" "\\192.168.12.11\c$\Program Files\Zabbix\bin\win64" /z /y
xcopy "C:\zabbix_distr\bin\win64\zabbix_get.exe" "\\192.168.12.11\c$\Program Files\Zabbix\bin\win64" /z /y
xcopy "C:\zabbix_distr\bin\win64\zabbix_sender.exe" "\\192.168.12.11\c$\Program Files\Zabbix\bin\win64" /z /y
xcopy "C:\zabbix_distr\uninstall_zabbix.bat" "\\192.168.12.11\c$\Program Files\Zabbix\conf" /z /y

Второй удаляет этот забикс агент:
cd c:\program files\zabbix\bin\win64
zabbix_agentd.exe -d --uninstall

и третий устанавливает:
cd c:\program files\zabbix\bin\win64
"c:\program files\zabbix\bin\win64\zabbix_agentd.exe" --config "c:\program files\zabbix\conf\zabbix_agentd.conf" --install
"c:\program files\zabbix\bin\win64\zabbix_agentd.exe" --config "c:\program files\zabbix\conf\zabbix_agentd.conf" --start

Но у меня не получается удаленно запустить бат фалы по установке и удалению командой start \\192.168***... и так далее,
так как чтобы установить/удалить службы, нужно выполнять с повышением прав.

И вот, я не могу разобраться, как же это сделать удаленно с помощью bat файла..

НариманБ
02-02-2016, 08:15
И, кстати, если знаете команду по копированию одной директории с имеющимися внутри файлами и папками, буду рад =)
А то мне кажется копирование каждого файла немного корявым.. =)

Elven
02-02-2016, 09:10
Возможно команда не выполняется не из-за недостатка прав (хоть я возможно и не прав), попробуйте вместо
start \\192.168.*** ...
запустить вот так:
pushd \\192.168.***\
start ...
popd
если же повышение прав необходимо то помогут GPO+шедулер.
через GPO раскидываем файлы (https://technet.microsoft.com/ru-ru/library/cc772536.aspx) и через него же создаем задачу (https://technet.microsoft.com/ru-ru/library/cc725745.aspx?f=255&mspperror=-2147217396&tduid=%28c4a596e11f849e97acb7e0fe0b3d5f75%29%28256380%29%282459594%29%28XdSn0e3h3.k-EBiZTkpBVWQqp62UR9taTg%29%28%29) в шедулере с галочкой "Выполнять с наивысшими правами".

НариманБ
02-02-2016, 10:01
К сожалению оба варианта не помогли..
По первому способу:
При выполнении этого кода открывается cmd.exe от моего доменного имени.

По второму способу:
Задание выполняется. Пишет, что завершено успешно.
Но служба все еще существует и в "результатах последнего запуска" код (0x1).

Elven
02-02-2016, 10:10
открывается cmd.exe от моего доменного имени. »
открывается от имени того, кто запускает. больше ничего не происходит?
pushd \\IP_удаленной_машины\имя_папки\
start имя_программы_или_скрипта.расширение
popd
так запускаете?

Задание выполняется. Пишет, что завершено успешно.
Но служба все еще существует и в "результатах последнего запуска" код (0x1). »
в батнике, часом, нет относительных ссылок?

НариманБ
02-02-2016, 11:53
в батнике, часом, нет относительных ссылок? »

В батнике вот такой код:
cd c:\program files\zabbix\bin\win64
zabbix_agentd.exe -d --uninstall

pushd \\IP_удаленной_машины\имя_папки\
start имя_программы_или_скрипта.расширение
popd »

Пишу вот такой:
pushd \\192.168.12.11\c$\Program Files\Zabbix\bin\win64\
start "C:\Program Files\Zabbix\uninstall_zabbix.bat"
popd

После него выходит окно cmd с предложением ввести следующие команды с места -
Z:\Program Files\Zabbix\bin\win64>

Как я понимаю, подвязывается диск С сервера, где должно выполниться удаление, к серверу откуда запускаю батник, и ему дается буква Z.
Ладно, но если ввести в этом окне команду zabbix_agentd.exe -d --uninstall,
то он выдает ошибку, что "zabbix_agentd.exe" не является внутренней или внешней командой... и так далее.

Elven
02-02-2016, 12:54
pushd \\192.168.12.11\c$\Program Files\Zabbix\bin\win64\
start uninstall_zabbix.bat
popd

НариманБ
02-02-2016, 14:23
:
pushd \\192.168.12.11\c$\Program Files\Zabbix\bin\win64\
start uninstall_zabbix.bat
popd »

В этом варианте ругается на то, что "uninstall.bat" не является командой =(

Foreigner
02-02-2016, 14:46
НариманБ, Про кавычки не забыли вокруг пути с пробелами? Подозреваю, что сетевой диск просто не монтируется по этой причине.

pushd "\\192.168.12.11\c$\Program Files\Zabbix\bin\win64"

Elven
02-02-2016, 14:51
Foreigner, pushd нормально пробелы переваривает - проверял несколько раз.
Остаются только два варианта: либо файла нету, либо в его имени в start допущена ошибка.

Foreigner
02-02-2016, 15:42
pushd нормально пробелы переваривает »
Странно, действительно переваривает. Еще есть соображение, надо запускать через start /wait, чтобы диск гарантированно удалялся только после завершения сессии (батника). Поэтому даже popd в принципе не нужен.

НариманБ
03-02-2016, 07:06
Еще есть соображение, надо запускать через start /wait, чтобы диск гарантированно удалялся только после завершения сессии (батника). »

С /wait уже есть продвижения, запускается батник корректно, но выходит ошибка:
ERROR: cannot connect to Service Manager, что говорит о том, что батник был запущен от моего имени, без повышения прав

Elven
03-02-2016, 11:30
без повышения прав »
Батник запускался просто руками или через планировщик? Сам по себе он не дает повышения прав, при запуске через планировщик нужно отметить "Выполнять с наивысшими правами".

НариманБ
03-02-2016, 12:43
"Выполнять с наивысшими правами". »

Так я так пробовал. Задание отрабатывается с ошибкой (0х1).. писал в посте выше

AleksandrG
21-04-2016, 15:26
а зачем так сложно?
xcopy позволяет копировать папками
xcopy /E /I C:\zabbix_distr\ "\\192.168.12.11\c$\Program Files\Zabbix" примерно так
а запустить нужный файл на выполнение можно ч\з утилиты PsTools. выполнятся будет от system
а если сделать SFX архив с параметрами запуска Zabbix.exe.sfx, то можно ниче не копировать
PsExec и скопирует и запустит
psexec [\\компьютер[,компьютер2[,...] | @файл-список_серверов -c -d Zabbix.exe.sfx




© OSzone.net 2001-2012