Запуск блокнота и не только, на удаленной машине.

vadipok
Дата: 01.07.2015 10:36:43
Доброе утро, уважаемые коллеги!

В конторе есть дорогостоящие машины для расчета гидравлических моделей.(стоимость каждой примерно 300 к. руб была, когда брали. 80-100 RAM. 32-64 CPU)
Но такие машины не всем достались, и поэтому у некоторых расчеты идут очень долго(бывает до 1-го месяца).
1 модель состоит из кучи мелких не зависимых расчетов(до 20 000). В общем нет разницы на какой машине ты выполнишь тот или иной расчет.
Поэтому решили по пробовать создать искусственный кластер из всех машин в которых выполняются такие расчеты.

1) По удаленке подключились к машине YY.Y.Y.YYY и выполнили команду mored -n 4 \\XX.X.X.XXX\C$\test\base.
Все ок, результаты расчетов упали в машину XX.X.X.XXX, в общем туда куда надо.
Вывод, теоритически реально создать искусственный кластер.

2) Создал приложение по примеру от сюда.
Все ок, блокнот запускается на удаленной машине.

3) команду блокнота меняем на команду mored -n 4 \\XX.X.X.XXX\C$\test\base.
И ничего не происходит, ошибку не выдает.
Нужный процесс на удаленной машине не появляется.
Начали извращаться различными командами (см. ниже), эффекта 0.

В чем могут быть грабли? Куда копать?
Спасибо большое!

			//Запуск блакнота
			//////////////////////////////
			BSTR MethodName = SysAllocString(L"Create");
			BSTR ClassName = SysAllocString(L"Win32_Process");
			IWbemClassObject* pClass = NULL;
			hres = pSvc->GetObject(ClassName, 0, NULL, &pClass, NULL);
			IWbemClassObject* pInParamsDefinition = NULL;
			hres = pClass->GetMethod(MethodName, 0, &pInParamsDefinition, NULL);
			IWbemClassObject* pClassInstance = NULL;
			hres = pInParamsDefinition->SpawnInstance(0, &pClassInstance);
			VARIANT varCommand;
		    varCommand.vt = VT_BSTR;
			//varCommand.bstrVal = _bstr_t(L"\\XX.X.X.XXX\C$\Program Files\ROXAR\simulation\bin\more\v7.0\Windows_NT_X64\mored.exe -n 4 \\XX.X.X.XXX\C$\test\base");
			varCommand.bstrVal = _bstr_t(L"cmd.exe /c mored -n 4 \\XX.X.X.XXX\C$\test\base");
			hres = pClassInstance->Put(L"CommandLine", 0, &varCommand, 0);
			//wprintf(L"The command is: %s\n", V_BSTR(&varCommand));
			IWbemClassObject* pOutParams = NULL;
			cout << cpu_memory.employeeID << endl;
			if (atoi(cpu_memory.employeeID) == 445) 
			{
				hres = pSvc->ExecMethod(ClassName, MethodName, 0, NULL, pClassInstance, &pOutParams, NULL);
				cout << "good" << endl;
				if (FAILED(hres))
				{
					cout << "Could not execute method. Error code = 0x" << hex << hres << endl;
					cout << "hachalbak" << endl;
				}
			}
			//////////////////////////////
YesSql
Дата: 01.07.2015 11:06:20
vadipok
Доброе утро, уважаемые коллеги!

В конторе есть дорогостоящие машины для расчета гидравлических моделей.(стоимость каждой примерно 300 к. руб была, когда брали. 80-100 RAM. 32-64 CPU)
Но такие машины не всем достались, и поэтому у некоторых расчеты идут очень долго(бывает до 1-го месяца).
1 модель состоит из кучи мелких не зависимых расчетов(до 20 000). В общем нет разницы на какой машине ты выполнишь тот или иной расчет.
Поэтому решили по пробовать создать искусственный кластер из всех машин в которых выполняются такие расчеты.

1) По удаленке подключились к машине YY.Y.Y.YYY и выполнили команду mored -n 4 \\XX.X.X.XXX\C$\test\base.
Все ок, результаты расчетов упали в машину XX.X.X.XXX, в общем туда куда надо.
Вывод, теоритически реально создать искусственный кластер.

2) Создал приложение по примеру от сюда.
Все ок, блокнот запускается на удаленной машине.

3) команду блокнота меняем на команду mored -n 4 \\XX.X.X.XXX\C$\test\base.
И ничего не происходит, ошибку не выдает.
Нужный процесс на удаленной машине не появляется.
Начали извращаться различными командами (см. ниже), эффекта 0.

В чем могут быть грабли? Куда копать?
Спасибо большое!


А чем SSH не устраивает?
Dima T
Дата: 01.07.2015 11:28:22
Ошибки надо обрабатывать. Может прав каких не хватает.

ИМХУ проще самодельную запускалку написать: висит, слушает какой-то TCP порт, по входящему соединению принимает командную строку, запускает, ждет завершения, сообщает результат.
bazile
Дата: 01.07.2015 13:26:41
vadipok, попробуйте psexec.
vadipok
Дата: 01.07.2015 13:50:30
bazile
vadipok, попробуйте psexec.


Доступа нет на technet, кое как допросился до msdn.
Скиньте пожалуйста содержимое сюда в spoiler.
Спасибо!
vadipok
Дата: 01.07.2015 13:52:26
YesSql,

Не уверен.
Беглое гугление говорит, что там могут быть трудности с определением свободных ресурсов на удаленной машине и определением не запущен ли там схожий процесс.
А это архи важно для нашей идеи.
vadipok
Дата: 01.07.2015 13:53:30
Dima T,

Спасибо!
Но разрешения ставить клиентское приложение на удаленных машинах не дадут. У нас это принципиально.
Dima T
Дата: 01.07.2015 14:00:14
vadipok
Но разрешения ставить клиентское приложение на удаленных машинах не дадут. У нас это принципиально.

Странная у вас контора. Прогу самописную нельзя ставить, а троянов писать можно ))

Может не работает потому что админами заблокирована такая возможность?
vadipok
Дата: 01.07.2015 14:01:45
Dima T
vadipok
Но разрешения ставить клиентское приложение на удаленных машинах не дадут. У нас это принципиально.

Странная у вас контора. Прогу самописную нельзя ставить, а троянов писать можно ))

Может не работает потому что админами заблокирована такая возможность?




vadipok
2) Создал приложение по примеру от сюда.
Все ок, блокнот запускается на удаленной машине.
Dima T
Дата: 01.07.2015 14:06:15
vadipok
2) Создал приложение по примеру от сюда.
Все ок, блокнот запускается на удаленной машине.

Может твоей проги просто нет в путях и виндовс не знает где твой exe?
Для теста запусти на том компе консоль (cmd.exe) и напиши в ней свою командную строку. Посмотри что пишет.