как запустить cmd на удаленном компьютере? #491180


#0 by gr13
в продолжении темы есть ли возможность запустить cmd на удаленном компьютере7 если есть необходимые права
#1 by gr13
на XP и без установки дополнительных программ
#2 by smaharbA
без окна ?
#3 by gr13
в смысле? ну я у себя подключился типа cmd //10.10.10.10 /k cmd и открыл у себя локально на машине командную строку, команды которой будут обрабатываться на удаленном компьютере?
#4 by smaharbA
телнет пойдет ?
#5 by gr13
я нашел там есть строка remote.exe /c remote server remoteshell но я не знаю где взять эту команду remote - sdk себе поставил уже, но там ее нет :(
#6 by gr13
врать не буду не пользовался, можно ли из под телнета запустить скажем netstat и получить результат?
#7 by ДенисЧ
можно, в окне телнета :-)
#8 by ДенисЧ
а rexec не поможет? RexecЗапускает команды на удаленных компьютерах с работающей службой Rexec. Команда rexec проверяет подлинность имени пользователя на удаленном компьютере до выполнения определенной команды. Операционные системы Windows XP и Windows 2000 не предоставляют возможности службы Rexec. Запущенная без параметров команда rexec выводит справку
#9 by sergeante
#10 by sergeante
+ без установки. Из комплекта Русиновича
#11 by gr13
ставить нельзя проги
#12 by gr13
только что предустановлено
#13 by sergeante
она без установки работает, Это просто exe
#14 by sergeante
На удалённую машину _ничего ставить не надо_. PsExec запускается локально
#15 by gr13
к примеру такой вариант winrm id -r:10.10.10.10 'проверка включен или нет wmic /node:10.10.10.10 /User:"user" /PASSWORD:"123" service where name='winrm' startservice wmic /node:10.10.10.10 service where name='winrm' startservice wmic /node:10.10.10.10 service where name='winrm' list wmic /node:10.10.10.10 service where name='winrm' stopservice winrs -r:10.10.10.10 -u:"user" -p:123 netstat использовать нельзя, т.к. по умолчанию winrm (winrs) не идет в XP, только с vista установлена по умолчанию
#16 by gr13
понял попробую
#17 by sergeante
Программа PsExec — это облегченный вариант Telnet. Она позволяет выполнять процессы в удаленных системах, используя для этого все возможности интерактивного интерфейса консольных приложений, и при этом нет необходимости вручную устанавливать клиентское программное обеспечение. Основное достоинство PsExec — это возможность вызывать в интерактивном режиме интерфейс командной строки в удаленных системах и удаленно запускать такие инструменты как IpConfig. Это единственный способ вывести на экран локального компьютера данные об удаленной системе.
#18 by sergeante
разумеется, надо иметь административные права на выполнение удалённых команд
#19 by gr13
гляжу) интересно) не работает) разбираюся
#20 by gr13
они есть
#21 by smaharbA
посмотри внимательно на дистр ХП support toools
#22 by smaharbA
что бы рексек помог нужен установвленный рексекД
#23 by smaharbA
самое просто тебе будет так (ничего стороннего) wmic /node:ws112 service where "name like 'tlntsvr'" call ChangeStartMode "manual" wmic /node:ws112 service where "name like 'tlntsvr'" call startservice telnet ws112
#24 by gr13
ну у меня он есть, правда где-бы взять пример его запуска - а то у меня отваливается с ошибкой
#25 by smaharbA
нужен rexecd --install на удаленной машине у себя rexec машина команда, или rsh машина команда
#26 by smaharbA
а так см
#27 by gr13
ясно, если я правильно понял, то rsh по умолчанию на xp нету, но у меня стоит - счас попробую
#28 by smaharbA
+ см
#29 by gr13
(+27) и rexec и rsh пишут что в подключении отказано - там наверное надо что-то включить
#30 by smaharbA
+ причем через телнет даже фар работает
#31 by gr13
неверный глобальный ключь
#32 by smaharbA
читай на удаленой машинен нужен rexecd --install (его в штатной поставке нет)
#33 by smaharbA
выполни где ws112 - имя удаленной машины
#34 by gr13
я на удалеенной машине проверил - стоит
#35 by gr13
wmic /node:ws112 service where "name like 'tlntsvr'" call ChangeStartMode "manual" wmic /node:ws112 service where "name like 'tlntsvr'" call startservice выполняю эти 2 команды ws112 меняю на имя удаленной машины - пишет не верный глобальный ключ
#36 by smaharbA
не rexec а rexecd почуствуй разницу ws112 замени на имя или адрес машины "жертвы"
#37 by smaharbA
если имя машины содержит - _ и прчую чухню, то ее надо заключать в кавычки типа wmic /node:"Комп-Васи_Пупкина" service where "name like 'tlntsvr'" call ChangeStartMode "manual"
#38 by Vippi
О как. Точно. Очень удобно.
#39 by gr13
с ip заработало) спасибо а почему rexec не работает?
#40 by smaharbA
см первую строку внимательно ))
#41 by gr13
а у тел нет есть ли пакетный запуск - чтобы получить результат?
#42 by Фея с лопатой
Решал такую задачу. Либо PsExec  либо CPAU
#43 by gr13
изменю вопрос - rexec для чего нужен?
#44 by gr13
cpau?
#45 by Фея с лопатой
#46 by gr13
можно из telnet получить результат netstat скажем в 1С?
#47 by Фея с лопатой
Вот еще до кучи из гугл закладок...
#48 by Фея с лопатой
Из телнет не пробовал... Моя задача была удалить или переместить файл во время работы пользователя с ограниченными правами батником под правами админа.
#49 by Фея с лопатой
А, еще службы надо было запускать и останавливать и т.д.
#50 by smaharbA
для rsh нужно вот это один сервис rshsvc
#51 by gr13
пасип я уже много чего облазил перед тем как спросить погляжу
#52 by HIDDEN MESSAGE
#53 by smaharbA
telnet -f telnet.txt ws112 для получения результата
#54 by Фея с лопатой
на удаленной машине кладешь батник и CPAU и по расписанию из автозагрузки и т.д. его запускаешь. в батнике обращаешься к СПАУ и делаешь че тебе надо. Не помню деталей.
#55 by Фея с лопатой
Батники дома остались, если очень надо, стукнись вечером, примеры скину.
#56 by smaharbA
спутал в 2003 нету сервиса, он был в 2000 и в НТ, далее вроде в SUA
#57 by gr13
у меня более полутора тысяч удаленных машин ;) как ты себе это представляешь ;)
#58 by gr13
нелюблю-нельзя использовать файлики)
#59 by gr13
(+58) требуется запустить из 1С
#60 by gr13
(+59) и получить результат, без нажимния на доп кнопочки
#61 by smaharbA
какой нужен результат ? может подскажу решение и в коде 1с
#62 by vde69
COM = Новый COMОбъект ("WbemScripting.SWbemLocator");        Серв = COM.ConnectServer(СокрЛп(ИмяКомпьютера), " ootcimv2", СокрЛП(Логин), СокрЛП(Пароль)); дальше у тебя полные права на удаленном компе
#63 by smaharbA
и как получить результат выполнения в тексте ?
#64 by vde69
конечно через запрос Серв.execQuery("Select * from........
#66 by smaharbA
как ?
#67 by smaharbA
всшконтроллер конечно хорош, но нужно специальным образом сперва запустить хостскрипт
#68 by Kreont
Использую CygWin Полезная штука, ставишь на нужные машины и имеешь полный админ доступ через нет
#69 by smaharbA
зачем ? (с)
#70 by Kreont
? Ну для того же напирмер "как запустить cmd на удаленном компьютере"
#71 by vde69
надо поискать обекты типа Win32_NetworkAdapterConfiguration ведь автору нужнен список конектов, уверен, что это можно получить без cmd
#72 by smaharbA
зачем для этого уеб..ще из ?
#73 by smaharbA
+ тогда уж лучче всшконтрол преложенный
#74 by Kreont
Ну как зачем, так ведь полный доступ ко всем ДОС командам + bash :) на виндовс, попробуйте - удивитесь от возможностей Примерчик: netstat| grep ESTABLISHED все активный поднятые соединения на удаленном компе + команда kill процесов и т.д....
#75 by smaharbA
пипец а типо без этой байды нету возможности попробуй и удивишся netstat -an -p tcp | find "ESTABLISHED" открою секрет уникслайк тулсы и службы для мс виндуса есть при желании и на сайте МС, а в некоторых ОС и встроенные
#76 by smaharbA
+ команда taskkill процессов и т.д.
#77 by smaharbA
в из серии - нам пофих на систему, главное покучнее навалить всякого Г... (уж звиняйте - так оно и есть)
#78 by gr13
это уже было, но не нашли)
#79 by gr13
1500 удаленных машины.. запарюсь
#80 by smaharbA
погляди ссылку от vde69 может тебе и всшконтрол сойдет а так, счас лениво в понедельник накатаю тебе обработку в адинесе
#81 by gr13
это 1с? а дальше как запустить netstat и получить результат
#82 by smaharbA
все будет абсолютно без привлечения стороннего софта, если так надо
#83 by Kreont
500 машин и не запарился еще, ставим CygWin вместе с виндой одним кликом
#84 by smaharbA
обработка конечно болванка будет - рабочая красоты сам наведешь, ну и если что улучшишь
#85 by smaharbA
зачем ? чтобы нетстат запустить ?
#86 by vde69
- поищи полное описание пространства имен, там дофига обьектов (несколько тысяч) самому лень искать, но уверен на 99% что твоя задача решается довольно просто, всего-лишь нужно найти нужный обьект и прочитать его селектом.
#87 by vde69
как вариант :) запуск скрипта удаленно: метод CreateScript объекта WshController. Для работы нужно предварительно настроить клиентский компьютер, что так же можно сделать удаленно. Еще не нужно выкладывать запускаемый скрипт на общем ресурсе, все задумано так, что скрипт сам копируется в память клиентского компьютера и оттуда запускается: var compName = 'comp-46'; var SWbemLocator = WScript.CreateObject('WbemScripting.SWbemLocator'),    StdRegProv = SWbemLocator.ConnectServer(compName, 'Root\Default').Get('StdRegProv'),    Process = SWbemLocator.ConnectServer(compName, 'Root\CIMV2').Get('Win32_Process'); var ignoreUserSettings = StdRegProv.GetStringValue(0x80000002, 'Software\Microsoft\Windows Script Host\Settings', 'IgnoreUserSettings'),    localMachineRemote = StdRegProv.GetStringValue(0x80000002, 'Software\Microsoft\Windows Script Host\Settings', 'Remote'),    currentUserRemote = StdRegProv.GetStringValue(0x80000001, 'Software\Microsoft\Windows Script Host\Settings', 'Remote'); // настройка клиентского компьютера if (ignoreUserSettings != 0) {// смотрим какой ключ является приоритетным    if (localMachineRemote == 0) StdRegProv.SetStringValue(0x80000002, 'Software\Microsoft\Windows Script Host\Settings', 'Remote', '1'); } else if (currentUserRemote == 0) StdRegProv.SetStringValue(0x80000001, 'Software\Microsoft\Windows Script Host\Settings', 'Remote', '1'); Process.Create('wscript.exe -regserver');// для WinXP var on_Start = function {}; var on_End = function {}; var on_Error = function {    WScript.Echo('Client script error!'); }; var WshController = WScript.CreateObject('WshController'); var WshRemote = WshController.CreateScript('client.js', compName);// client.js - относительный путь, запускаемый скрипт лежит рядом с запускающим WScript.ConnectObject(WshRemote, 'on_'); WshRemote.Execute; // возвращаем все как было if (ignoreUserSettings != 0) {    if (localMachineRemote == 0) StdRegProv.SetStringValue(0x80000002, 'Software\Microsoft\Windows Script Host\Settings', 'Remote', '0'); } else if (currentUserRemote == 0) StdRegProv.SetStringValue(0x80000001, 'Software\Microsoft\Windows Script Host\Settings', 'Remote', '0'); WScript.Sleep;// почему-то у меня без этой строчки ничего не работает. На всякий случай client.js (создает текстовый файл на диске C: ): var FSO = WScript.CreateObject('Scripting.FileSystemObject'); var stream = FSO.CreateTextFile('C:\test' + Math.random + '.txt', true); stream.close;
#88 by smaharbA
потому что надо ставить бесконечный цыкл и вешать обработчик событий
#89 by smaharbA
+ либо типа do while WshRemote.status <> 2    wScript.sleep 100 loop
#90 by gr13
искал и не раз в другой ветке, поэтому перешел к запуску удаленного cmd
#91 by gr13
расскажи лучше как с помощью твоего примера вызвать программу и получить результат
#92 by gr13
(+91) Process.Create('netstat'); и как я в данном случае получу результат работы? если он просто выводит успешно, или не успешно?
#93 by vde69
COM = Новый COMОбъект ("WbemScripting.SWbemLocator"); Process = COM.ConnectServer(compName, 'Root\CIMV2').Get('Win32_Process'); Process.Create('ИМЯ_ФАЙЛА >C:\res._t_'); потом читаешь что в новом файле
#94 by gr13
COM = Новый COMОбъект ("WbemScripting.SWbemLocator");    Серв = COM.ConnectServer(СокрЛп(ИмяКомпьютера), " ootcimv2", СокрЛП(Логин), СокрЛП(Пароль)).get("win32_process");    Серв.Create("netstat"); в этом случае возвращает 0, вопрос как получить данные - я же говорю - замкнутый круг :(
#95 by gr13
сохранять в файл нельзя
#96 by gr13
такое условие -мне нужно просто получить данные как строка или что-то еще, но создавать файл нельзя - знаешь сколько я уже намучался с этим условием?
#97 by gr13
вот так)        Логин = "user";    Пароль = "123";        СтрокаЗапуска = "C:distrPsToolspsexec \10.10.10.10 -u " + Логин + " -p " + Пароль + " netstat";        WSHShell = Новый COMОбъект ("WScript.Shell");        WshExec = WSHShell.Exec(СтрокаЗапуска);    OutStream = WshExec.StdOut;    Str = "";    Пока Не OutStream.AtEndOfStream Цикл        Str = Str + СокрЛП(OutStream.ReadLine) + Символы.ПС;    КонецЦикла;        Сообщить(Str); ))
#98 by gr13
теперь надо еще с телнетом разобраться :( и вообще супер будет
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С