Удаленное выполнение команды
-
26-10-2019 - |
Вопрос
Я хочу удаленно выполнять команды на машине с хост-машины, выполняющей, скажем, приложение типа C#/C++/C.Приложение предназначено для контроля и выполнения выполнения команд на удаленной машине.Возможно ли что-то подобное, используя любой язык программирования??
Я проверил psexec и т. д., но мне нужен больший контроль, поэтому я думаю сделать это программно «по-своему» :)
Привет Ананд
Решение
Не уверен насчет типа команд, которые вы ищете. Проще говоря, «вызов-командир» должен быть в состоянии выполнять команды на локальных и удаленных компьютерах.
Если вы ищете настройку в значительной степени, вам может потребоваться разработать агенты (такие как сборка, используемые с CI), которые могут выполнять.
Другие советы
Googlr для "удаленного вызова процедуры" и посмотрите на http://en.wikipedia.org/wiki/soap
Для Unix SSH является хорошим вариантом, для Windows вы можете использовать комбинацию WinRM / PowerShell, есть C ++ API, доступные для WinRM / PowerShell.
Psexec - это хороший способ исследовать. Смотреть здесь Больше подробностей.
В C# довольно тривиально размещать услугу WCF в вашем приложении и удалить таким образом.
Проверить эта ссылка.
Я использовал XML-RPC До RPC в C и это довольно просто.
Это действительно зависит от того, какой тип «команд» вы хотите выполнять, насколько мощными вы хотите видеть свои приложения и какие ресурсы (время, стоимость, рабочая сила, уровень навыков и т. д.) у вас есть.У вас есть множество вариантов: от банальных и легко реализуемых до перегруженных шедевров SOA.Как упоминалось выше, вы можете использовать что-то простое, например SSH, PowerShell и т. д., но похоже, что вам нужно что-то более мощное (современное?) (Кстати, xml-rpc — это не только единороги и радуги;У меня есть шрамы, чтобы доказать это!)
Отправка удаленных команд между компьютерами — старая, решенная проблема, поэтому существует множество существующих технологий, которыми вы можете воспользоваться:RPC -> XML-RPC -> WS-*/SOAP -> SOAP-RPC -> .Net Remoting -> WCF -> REST...и это лишь немногие избранные, к которым у вас есть доступ.
Если ваши требования довольно просты, я бы отказался от полноценной архитектуры типа SOA/ESB и, возможно, использовал бы такую технологию, как WCF (которую все еще можно использовать, если вы мечтаете о многом и хотите расширить приложение до SOA). шедевр позже).Работа с WCF требует некоторого обучения (и WCF, конечно, не только единороги и радуги), но у нас есть много ресурсов, на которых можно учиться.
Используя WCF, вы также можете реализовать фактические вызовы через REST, закодировать данные в JSON, построить все это в приложении ASP.Net MVC, и тогда вы будете полностью совместимы с модными словами.Но что еще более важно, у вас будет гибкое и расширяемое приложение в будущем.
Было бы полезно узнать больше о конкретных типах команд, которые вы хотите запускать, и о функциях, которые вам нужны.