Имя: Пароль:
IT
 
как запустить 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
48 Фея с лопатой
 
02.07.10
13:06
Из телнет не пробовал... Моя задача была удалить или переместить файл во время работы пользователя с ограниченными правами батником под правами админа.
49 Фея с лопатой
 
02.07.10
13:06
А, еще службы надо было запускать и останавливать и т.д.
50 smaharbA
 
02.07.10
13:08
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
теперь надо еще с телнетом разобраться :( и вообще супер будет