У меня есть единственная команда, которую я хотел бы выполнить на удаленном сервере Windows 2003.
Я пробовал wmic, который работает, но единственный способ отобразить стандартный вывод - это перенаправить его в локальный файл, а затем перечислить локальный файл (что-то неуклюжее).
Я также пробовал psexec, но, похоже, у него проблемы с работой с серверами Windows 2003 (по крайней мере, сообщается, что последняя версия работает, а более старые версии недоступны).
Я пытался держаться подальше от утилиты Windows rcmd, потому что считаю, что необходимо установить серверный компонент, и я не хотел предоставлять общий доступ к командной строке на машине.
Есть ли какие-либо другие предложения для инструментов или утилит, которые позволили бы мне выполнять определенные команды на удаленном компьютере.
Примечание:
Вот очень простой пример, который я использовал, пытаясь заставить PsExec работать:
C:\Program Files\SysInternalsSuite>psexec \\remote-svr -i -u MyUsername D:\Public\do.bat
PsExec v1.95 - Execute processes remotely
Copyright (C) 2001-2009 Mark Russinovich
Sysinternals - www.sysinternals.com
Password:
D:\Public\do.bat exited on remote-svr with error code 1.
Мой пример файла do.bat прост и содержит только следующую строку:
copy dg.bmp dg1.bmp
Исходный файл dg.bmp присутствует на удаленном компьютере, а файл назначения - нет. У меня есть доступ на запись к удаленному компьютеру.
Когда я выполняю указанную выше команду PsExec, файл do.bat не запускается (хотя у меня есть привилегии на удаленном сервере), и я не получаю на консоль ожидаемого вывода. Мне нравится идея использования PsExec, поэтому, если есть какие-либо советы о том, что я делаю неправильно, я был бы признателен их выслушать.
Спасибо...
Какие именно проблемы возникают с PSExec и W2k3? Мы широко используем их вместе в более чем 500 серверных средах W2k3 ...
Фактически, весь пакет PSTools потрясает мой мир.
РЕДАКТИРОВАТЬ:
Это продолжение вашего редактирования исходного билета.
Проблема, с которой вы столкнулись, заключается в том, что «копия» является функцией CMD.exe. Он не существует как отдельный исполняемый файл сам по себе. То же, что нет ни Del.exe, ни MD.exe и т. Д.
Если вы хотите, чтобы ваш пример работал, вам нужно вызвать CMD через PSexec и передать ему команду копирования. Вот пример:
psexec -u MyDomain\MyUsername -p MyPassword \\MyServer cmd.exe /c copy c:\sys\util\monitor_localhost.bat blah.bat
Результат такой:
==================================
PsExec v1.86 - Execute processes remotely Copyright (C) 2001-2007 Mark Russinovich Sysinternals - www.sysinternals.com
1 file(s) copied. cmd.exe exited on fcgwnt53 with error code 0.
==================================
Админ-арсенал позволяет выполнять удаленные команды к одной, некоторым или всем вашим системам Windows. Попробовать можно бесплатно.
После того, как вы выберете, на каком компьютере (-ах) выполнить вашу команду, просто выберите Инструменты -> Удаленное управление, и вы в пути.
Способ удаленного выполнения команды в среде Windows - это Winrm и WINrs. Видеть Как включить Windows Remote Shell и Как WinRM и WinRS могут вам помочь, как их включить и примеры того, как их можно использовать.
Стандартные команды могут выполняться через telnet, который по умолчанию отключен на всех рабочих станциях Microsoft, но может быть включен через GPO и добавление пользователя в группу объектов «Пользователи Telnet». Этого должно хватить для большинства системных команд.
Вы можете попробовать опцию «-c» для psexec. Он скопирует файл в удаленную систему, а затем выполнит его, в противном случае он будет ожидать, что он будет присутствовать в удаленной системе. Так что что-то вроде (скопируйте do.bat в c: локальной системы, а затем):
psexec -c \ remote-svr -i -u MyUsername c: \ do.bat
Кроме того, почему вы хотите, чтобы это взаимодействовало с сеансом рабочего стола удаленной системы (параметр -i)?
hth, ~ H
Общая команда предполагает, что do.bat локально присутствует на удаленном сервере в указанном месте. Если это не так, вы можете попросить psexec.exe скопировать файл с вашего локального компьютера на удаленный, используя параметр -C, а затем запустить его.
Также, как указано, если вы не делаете ничего интерактивного со скриптом, не включайте параметр -I.
Я пробовал beyondexec.exe, это хорошая замена psexec.exe.
Но я предпочитаю psexec.exe, так как он теперь предоставляется Microsoft, поэтому ястребам безопасности легче оправдать его существование на серверах.
Я могу ошибаться, но разве PS 2.0 не допускает удаленных команд, а PS 1.0 - только локальных?
Я не могу сказать, что когда-либо пробовал это на машине с Windows, но в Linux вы можете ограничить команды, которые ssh может выполнять, с помощью скрипта Authprogs.
Я установил версию ssh для HP в большинстве своих систем Windows для удаленного использования командной строки. Я обнаружил, что его довольно легко установить по сравнению с некоторыми другими дистрибутивами ssh для Windows. Погуглите «SP25021», чтобы найти установщик, предоставленный HP.
Я уверен, что доступны гораздо более новые версии sshd для Windows. Я бы посоветовал использовать самую последнюю возможную версию, если ваши системы не защищены серьезными брандмауэрами.
См .: Ограничение команд SSH. http://www.cmdln.org/2008/02/11/restricting-ssh-commands/