![]() |
|
как запустить cmd на удаленном компьютере? | ☑ | ||
---|---|---|---|---|
0
gr13
02.07.10
✎
11:51
|
в продолжении темы как запустить команду NetStat с помощью wmi
есть ли возможность запустить cmd на удаленном компьютере7 если есть необходимые права |
|||
1
gr13
02.07.10
✎
11:51
|
на XP и без установки дополнительных программ
|
|||
2
smaharbA
02.07.10
✎
11:51
|
без окна ?
|
|||
3
gr13
02.07.10
✎
11:53
|
(2) в смысле? ну я у себя подключился типа
cmd //10.10.10.10 /k cmd и открыл у себя локально на машине командную строку, команды которой будут обрабатываться на удаленном компьютере? |
|||
4
smaharbA
02.07.10
✎
11:55
|
телнет пойдет ?
|
|||
5
gr13
02.07.10
✎
11:55
|
я нашел http://support.microsoft.com/kb/286350
там есть строка remote.exe /c remote server remoteshell но я не знаю где взять эту команду remote - sdk себе поставил уже, но там ее нет :( |
|||
6
gr13
02.07.10
✎
11:56
|
(4) врать не буду не пользовался, можно ли из под телнета запустить скажем netstat и получить результат?
|
|||
7
ДенисЧ
02.07.10
✎
11:57
|
(6) можно, в окне телнета :-)
|
|||
8
ДенисЧ
02.07.10
✎
11:59
|
(0) а rexec не поможет?
RexecЗапускает команды на удаленных компьютерах с работающей службой Rexec. Команда rexec проверяет подлинность имени пользователя на удаленном компьютере до выполнения определенной команды. Операционные системы Windows XP и Windows 2000 не предоставляют возможности службы Rexec. Запущенная без параметров команда rexec выводит справку |
|||
9
sergeante
02.07.10
✎
12:00
|
||||
10
sergeante
02.07.10
✎
12:01
|
+(9) без установки. Из комплекта Русиновича
|
|||
11
gr13
02.07.10
✎
12:01
|
(9) ставить нельзя проги
|
|||
12
gr13
02.07.10
✎
12:01
|
только что предустановлено
|
|||
13
sergeante
02.07.10
✎
12:02
|
(11) она без установки работает, Это просто exe
|
|||
14
sergeante
02.07.10
✎
12:04
|
(11) На удалённую машину _ничего ставить не надо_. PsExec запускается локально
|
|||
15
gr13
02.07.10
✎
12:04
|
к примеру такой вариант
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
gr13
02.07.10
✎
12:04
|
(14) понял попробую
|
|||
17
sergeante
02.07.10
✎
12:05
|
Программа PsExec — это облегченный вариант Telnet. Она позволяет выполнять процессы в удаленных системах, используя для этого все возможности интерактивного интерфейса консольных приложений, и при этом нет необходимости вручную устанавливать клиентское программное обеспечение. Основное достоинство PsExec — это возможность вызывать в интерактивном режиме интерфейс командной строки в удаленных системах и удаленно запускать такие инструменты как IpConfig. Это единственный способ вывести на экран локального компьютера данные об удаленной системе.
|
|||
18
sergeante
02.07.10
✎
12:06
|
разумеется, надо иметь административные права на выполнение удалённых команд
|
|||
19
gr13
02.07.10
✎
12:07
|
(8) гляжу) интересно) не работает) разбираюся
|
|||
20
gr13
02.07.10
✎
12:07
|
(18) они есть
|
|||
21
smaharbA
02.07.10
✎
12:08
|
(5) посмотри внимательно на дистр ХП support toools
|
|||
22
smaharbA
02.07.10
✎
12:09
|
(8) что бы рексек помог нужен установвленный рексекД
|
|||
23
smaharbA
02.07.10
✎
12:14
|
самое просто тебе будет так (ничего стороннего)
wmic /node:ws112 service where "name like 'tlntsvr'" call ChangeStartMode "manual" wmic /node:ws112 service where "name like 'tlntsvr'" call startservice telnet ws112 |
|||
24
gr13
02.07.10
✎
12:14
|
(22) ну у меня он есть, правда где-бы взять пример его запуска - а то у меня отваливается с ошибкой
|
|||
25
smaharbA
02.07.10
✎
12:16
|
(24) нужен rexecd --install на удаленной машине
у себя rexec машина команда, или rsh машина команда |
|||
26
smaharbA
02.07.10
✎
12:17
|
а так см (22)
|
|||
27
gr13
02.07.10
✎
12:32
|
(25) ясно, если я правильно понял, то rsh по умолчанию на xp нету, но у меня стоит - счас попробую
|
|||
28
smaharbA
02.07.10
✎
12:32
|
+(26) см (23)
|
|||
29
gr13
02.07.10
✎
12:34
|
(+27) и rexec и rsh пишут что в подключении отказано - там наверное надо что-то включить
|
|||
30
smaharbA
02.07.10
✎
12:34
|
+(28) причем через телнет даже фар работает
|
|||
31
gr13
02.07.10
✎
12:34
|
(28) неверный глобальный ключь
|
|||
32
smaharbA
02.07.10
✎
12:35
|
(29) читай (25) на удаленой машинен нужен rexecd --install (его в штатной поставке нет)
|
|||
33
smaharbA
02.07.10
✎
12:36
|
выполни (23) где ws112 - имя удаленной машины
|
|||
34
gr13
02.07.10
✎
12:37
|
(32) я на удалеенной машине проверил - стоит
|
|||
35
gr13
02.07.10
✎
12:38
|
(33) wmic /node:ws112 service where "name like 'tlntsvr'" call ChangeStartMode "manual"
wmic /node:ws112 service where "name like 'tlntsvr'" call startservice выполняю эти 2 команды ws112 меняю на имя удаленной машины - пишет не верный глобальный ключ |
|||
36
smaharbA
02.07.10
✎
12:45
|
(34) не rexec а rexecd почуствуй разницу
(35) ws112 замени на имя или адрес машины "жертвы" |
|||
37
smaharbA
02.07.10
✎
12:47
|
если имя машины содержит - _ и прчую чухню, то ее надо заключать в кавычки типа
wmic /node:"Комп-Васи_Пупкина" service where "name like 'tlntsvr'" call ChangeStartMode "manual" |
|||
38
Vippi
02.07.10
✎
12:52
|
(30) О как. Точно.
Очень удобно. |
|||
39
gr13
02.07.10
✎
12:58
|
(36) с ip заработало) спасибо
а почему rexec не работает? |
|||
40
smaharbA
02.07.10
✎
12:59
|
(39) см (36) первую строку внимательно ))
|
|||
41
gr13
02.07.10
✎
13:00
|
а у тел нет есть ли пакетный запуск - чтобы получить результат?
|
|||
42
Фея с лопатой
02.07.10
✎
13:00
|
Решал такую задачу. Либо PsExec либо CPAU
|
|||
43
gr13
02.07.10
✎
13:00
|
(40) изменю вопрос - rexec для чего нужен?
|
|||
44
gr13
02.07.10
✎
13:00
|
(42) cpau?
|
|||
45
Фея с лопатой
02.07.10
✎
13:02
|
||||
46
gr13
02.07.10
✎
13:05
|
можно из telnet получить результат netstat скажем в 1С?
|
|||
47
Фея с лопатой
02.07.10
✎
13:05
|
Вот еще до кучи из гугл закладок...
http://ht.ua/forum/messages/forum4/topic2207/message15591/#message15591 http://technet.microsoft.com/ru-ru/sysinternals/bb897553.aspx http://white55.narod.ru/pstools.html http://admilink.narod.ru/AdmiLink.Htm#WhyNotRunAs http://dzyatlava.by/blog/captain-flint/kak-zapustit-programmu-ot-imeni-drugogo-polzovatelya |
|||
48
Фея с лопатой
02.07.10
✎
13:06
|
Из телнет не пробовал... Моя задача была удалить или переместить файл во время работы пользователя с ограниченными правами батником под правами админа.
|
|||
49
Фея с лопатой
02.07.10
✎
13:06
|
А, еще службы надо было запускать и останавливать и т.д.
|
|||
50
smaharbA
02.07.10
✎
13:08
|
для rsh нужно вот это
http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en один сервис rshsvc |
|||
51
gr13
02.07.10
✎
13:09
|
(50) пасип
(47) я уже много чего облазил перед тем как спросить погляжу |
|||
52
gr13
02.07.10
✎
13:10
|
(45) ну и как пример тут обратиться к удаленной машине?
Usage: CPAU -u user [-p password] -ex "WhatToRun" [switches] user User to log on as. Ex: user or domain\user password User's password WhatToRun What to execute Switches: (designated by - or /) -profile Do local logon with profile instead of net logon -localwithprofile Alias for -profile -lwp Alias for -profile -localwithoutprofile Local logon but do not load profile. -lwop Alias for -localwithoutprofile -k Prefix command with cmd /k to leave window open -c Prefix command with cmd /c to close window after exec. -pipepwd Special method allows you to pipe password in -enc Encrypt a job file for later user -dec Use an ecrypted job file -file Specify job file to execute or create -wait Wait for process completion before returning. -outprocexit Used with -wait, the errorlevel variable has the exit code of the spawned process instead of cpau. -cwd x Start at working directory x. -hide Start the new process in a hidden state. -title x Allow you specify title of command prompt windows. -crc file[,file,file] This option allows you to encode CRC info for files in the job file. When decoded the CRC have to match or the program bombs. Note that it will not chase paths looking for the file, you must specify the exact path. -nowarn Don't output warning about network logon. Ex1: cpau -u joehome\joe -p logon -ex "perl cleanup.pl" -lwp Runs perl script cleanup.pl as joehomejoe Ex2: cpau -u joehome\joe -p logon -ex "perl cleanup.pl" -enc -file cleanup.job Creates job file called cleanup.job to run perl script cleanup.pl as joehomejoe Ex3: cpau -dec -file cleanup.job -lwp Execute job file cleanup.job Ex4: cpau -u joehome\joe -p logon -ex "perl cleanup.pl" -wait -lwp Runs perl script cleanup.pl as joehomejoe and waits for process to end Ex5: cpau -u joe -p logon -ex notepad.exe -lwp Runs notepad as user joe Ex6: cpau -u joehome\joe -p logon -ex logonscript.cmd -lwp Runs logon script in current directory as user joe (see note below) Ex7: cpau -u joehome\joe -p logon -ex logonscript.cmd -lwp -cwd c:\temp Runs logon script in/from c:\temp as user joe (see note below) Ex8: cpau -u joe -p logon -ex logonscript.cmd -enc -file logon.job -crc logonscript.cmd Encodes logon.job file and CRC protects the batch file Notes: I had to add some protection to this app. It seems people were running this with a networked drive for the current working directory. Microsoft prevents cross- security context access of network drives on purpose, this causes CPAU to not be able to fire the process up. To correct for that, if CPAU realizes your current working directory is a network drive it will change the CWD to the default local path (usually c:\windows\system32). To override this functionality you must specify the CWD option, note that if you set it to a network drive you most likely will not function properly. Also note that this is not a bug in CPAU, this is purposeful functionality from MS. You can see this out of anything that changes your local security context. If you are using this for a logon script or something else where you need the permissions to take affect locally, you need to specify the -lwp (or -profile) switch. By default the process spawned has the current user's security context locally and the new security context remotely. Also keep in mind the note above concerning network drives, logon scripts run from network drives, you will need to set the CWD to a local machine (c:\temp maybe) and copy whatever files are necessary locally and then run cpau. As of Version 1.08.00 I have added the ability to insert environment variables into the job file. Normally env vars get converted into their values on the machine encoding the job file, I have made it so you can escape these so they will get decoded on the machine that runs the job file. To do this, on the command line when building the job file specify the environment variable like {%{env-var}%} instead of like %env-var%. So for instance if you wanted SystemRoot you would specify {%{SystemRoot}%}. This only works for items that are part of the -EX parameter. As of Version 1.08.00 I have also added additional protection around the CRC option. When you add CRC files to the job file, cpau will mark the file in such a way that no version prior to 1.08.00 will be able to use the job file. This is to prevent someone from taking a 1.08.00 or better job file with CRCs and use an older version of CPAU to avoid the CRCs. As of Version 1.08.00 I have also added the feature to display the encoded information when creating the job file. This should help reduce the questions I am getting on why a certain job file doesn't work. Often what people specify isn't encoded in the way they think, especially around env vars. As of Version 1.11.00 the -lwop option was added which allows a local logon without loading the user's profile. This may cause odd responses in some programs. If you experience issues, use -lwp to load the user's profile to see if that works. As of Version 1.11.00 I am specifically disallowing use from LocalSystem. This is something that works on older OS versions but doesn't work on XP SP2 and K3 and the inconsistency was causing a lot of support issues. The primary intent of this application is to allow interactive logons to switch security context for specific processes, not crutch unattended applications working for web apps and from the task scheduler. This software is Freeware. Use it as you wish at your own risk. If you have improvement ideas, bugs, or just wish to say Hi, I receive email 24x7 and read it in a semi-regular timeframe. You can usually find me at joe@joeware.net |
|||
53
smaharbA
02.07.10
✎
13:11
|
(41)
telnet -f telnet.txt ws112 для получения результата |
|||
54
Фея с лопатой
02.07.10
✎
13:15
|
на удаленной машине кладешь батник и CPAU и по расписанию из автозагрузки и т.д. его запускаешь. в батнике обращаешься к СПАУ и делаешь че тебе надо. Не помню деталей.
|
|||
55
Фея с лопатой
02.07.10
✎
13:16
|
Батники дома остались, если очень надо, стукнись вечером, примеры скину.
|
|||
56
smaharbA
02.07.10
✎
13:24
|
спутал в 2003 нету сервиса, он был в 2000 и в НТ, далее вроде в SUA
|
|||
57
gr13
02.07.10
✎
14:45
|
(54) у меня более полутора тысяч удаленных машин ;) как ты себе это представляешь ;)
|
|||
58
gr13
02.07.10
✎
14:46
|
(53) нелюблю-нельзя использовать файлики)
|
|||
59
gr13
02.07.10
✎
14:46
|
(+58) требуется запустить из 1С
|
|||
60
gr13
02.07.10
✎
14:46
|
(+59) и получить результат, без нажимния на доп кнопочки
|
|||
61
smaharbA
02.07.10
✎
15:05
|
(58) какой нужен результат ? может подскажу решение и в коде 1с
|
|||
62
vde69
02.07.10
✎
15:08
|
COM = Новый COMОбъект ("WbemScripting.SWbemLocator");
Серв = COM.ConnectServer(СокрЛп(ИмяКомпьютера), "\root\cimv2", СокрЛП(Логин), СокрЛП(Пароль)); дальше у тебя полные права на удаленном компе |
|||
63
smaharbA
02.07.10
✎
15:12
|
(62) и как получить результат выполнения в тексте ?
|
|||
64
vde69
02.07.10
✎
15:16
|
(63) конечно через запрос Серв.execQuery("Select * from........
|
|||
65
vde69
02.07.10
✎
15:18
|
||||
66
smaharbA
02.07.10
✎
15:18
|
(64) как ?
|
|||
67
smaharbA
02.07.10
✎
15:20
|
(65) всшконтроллер конечно хорош, но нужно специальным образом сперва запустить хостскрипт
|
|||
68
Kreont
02.07.10
✎
15:21
|
(0) Использую CygWin
Полезная штука, ставишь на нужные машины и имеешь полный админ доступ через нет |
|||
69
smaharbA
02.07.10
✎
15:22
|
(68) зачем ? (с)
|
|||
70
Kreont
02.07.10
✎
15:23
|
(69) ?
Ну для того же напирмер "как запустить cmd на удаленном компьютере" |
|||
71
vde69
02.07.10
✎
15:28
|
(66) надо поискать обекты типа Win32_NetworkAdapterConfiguration ведь автору нужнен список конектов, уверен, что это можно получить без cmd
|
|||
72
smaharbA
02.07.10
✎
15:29
|
(70) зачем для этого уеб..ще из (68) ?
|
|||
73
smaharbA
02.07.10
✎
15:35
|
+ тогда уж лучче всшконтрол преложенный vde69
|
|||
74
Kreont
02.07.10
✎
15:40
|
Ну как зачем, так ведь полный доступ ко всем ДОС командам +
bash :) на виндовс, попробуйте - удивитесь от возможностей Примерчик: netstat| grep ESTABLISHED все активный поднятые соединения на удаленном компе + команда kill процесов и т.д.... |
|||
75
smaharbA
02.07.10
✎
15:44
|
(74) пипец
а типо без этой байды нету возможности попробуй и удивишся netstat -an -p tcp | find "ESTABLISHED" открою секрет уникслайк тулсы и службы для мс виндуса есть при желании и на сайте МС, а в некоторых ОС и встроенные |
|||
76
smaharbA
02.07.10
✎
15:45
|
+ команда taskkill процессов и т.д.
|
|||
77
smaharbA
02.07.10
✎
15:46
|
в (68) из серии - нам пофих на систему, главное покучнее навалить всякого Г...
(уж звиняйте - так оно и есть) |
|||
78
gr13
02.07.10
✎
15:46
|
(71) это уже было, но не нашли)
|
|||
79
gr13
02.07.10
✎
15:47
|
(68) 1500 удаленных машины.. запарюсь
|
|||
80
smaharbA
02.07.10
✎
15:48
|
(78) погляди ссылку от vde69 может тебе и всшконтрол сойдет
а так, счас лениво в понедельник накатаю тебе обработку в адинесе |
|||
81
gr13
02.07.10
✎
15:48
|
(62) это 1с? а дальше как запустить netstat и получить результат
|
|||
82
smaharbA
02.07.10
✎
15:48
|
все будет абсолютно без привлечения стороннего софта, если так надо
|
|||
83
Kreont
02.07.10
✎
15:49
|
(79) 500 машин и не запарился еще, ставим CygWin вместе с виндой
одним кликом |
|||
84
smaharbA
02.07.10
✎
15:49
|
обработка конечно болванка будет - рабочая
красоты сам наведешь, ну и если что улучшишь |
|||
85
smaharbA
02.07.10
✎
15:50
|
(83) зачем ? чтобы нетстат запустить ?
|
|||
86
vde69
02.07.10
✎
15:51
|
gr13 - поищи полное описание пространства имен, там дофига обьектов (несколько тысяч) самому лень искать, но уверен на 99% что твоя задача решается довольно просто, всего-лишь нужно найти нужный обьект и прочитать его селектом.
|
|||
87
vde69
02.07.10
✎
15:53
|
как вариант :) запуск скрипта удаленно:
метод 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(100);// почему-то у меня без этой строчки ничего не работает. На всякий случай client.js (создает текстовый файл на диске C:\ ): var FSO = WScript.CreateObject('Scripting.FileSystemObject'); var stream = FSO.CreateTextFile('C:\\test' + Math.random() + '.txt', true); stream.close(); |
|||
88
smaharbA
02.07.10
✎
15:57
|
(87) потому что надо ставить бесконечный цыкл и вешать обработчик событий
|
|||
89
smaharbA
02.07.10
✎
15:59
|
+ либо типа
do while WshRemote.status <> 2 wScript.sleep 100 loop |
|||
90
gr13
02.07.10
✎
16:08
|
(86) искал и не раз в другой ветке, поэтому перешел к запуску удаленного cmd
|
|||
91
gr13
02.07.10
✎
16:08
|
(86) расскажи лучше как с помощью твоего примера вызвать программу и получить результат
|
|||
92
gr13
02.07.10
✎
16:25
|
(+91) Process.Create('netstat');
и как я в данном случае получу результат работы? если он просто выводит успешно, или не успешно? |
|||
93
vde69
02.07.10
✎
16:29
|
COM = Новый COMОбъект ("WbemScripting.SWbemLocator");
Process = COM.ConnectServer(compName, 'Root\\CIMV2').Get('Win32_Process'); Process.Create('ИМЯ_ФАЙЛА >C:\\res._t_'); потом читаешь что в новом файле |
|||
94
gr13
02.07.10
✎
16:33
|
COM = Новый COMОбъект ("WbemScripting.SWbemLocator");
Серв = COM.ConnectServer(СокрЛп(ИмяКомпьютера), "\root\cimv2", СокрЛП(Логин), СокрЛП(Пароль)).get("win32_process"); Серв.Create("netstat"); в этом случае возвращает 0, вопрос как получить данные - я же говорю - замкнутый круг :( |
|||
95
gr13
02.07.10
✎
16:33
|
(93) сохранять в файл нельзя
|
|||
96
gr13
02.07.10
✎
16:34
|
(95) такое условие -мне нужно просто получить данные как строка или что-то еще, но создавать файл нельзя - знаешь сколько я уже намучался с этим условием?
|
|||
97
gr13
02.07.10
✎
17:44
|
вот так)
Логин = "user"; Пароль = "123"; СтрокаЗапуска = "C:\distr\PsTools\psexec \\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
gr13
02.07.10
✎
17:44
|
теперь надо еще с телнетом разобраться :( и вообще супер будет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |