Удаленный вызов скрипта оболочки unix из C#

#c# #shell #unix

#c# #оболочка #unix

Вопрос:

В моем текущем проекте мне нужно вызвать сценарий оболочки Unix из приложения C #. Мне также нужно получить ответ, был ли скрипт выполнен успешно или произошла какая-либо ошибка.

Программа на C # запущена на компьютере с Windows. Мне нужно подключиться к машине Unix и выполнить скрипт.

Кто-нибудь может сообщить мне, как это можно сделать с помощью C #?

Комментарии:

1. Вы запускаете программу C # в окне Unix?

2. Программа на C # установлена на компьютере с Windows. Мне нужно подключиться к компьютеру Unix и выполнить скрипт.

Ответ №1:

Решит ли это вашу проблему?

SharpSSH — библиотека защищенной оболочки (SSH) для .NET

Обновить

Обратитесь к сайту разработчика для SharpSSH для получения дополнительной информации о том, как использовать инструмент.

Обновление 2

  • измените ссылку сайта разработчика на архивную ссылку.

Комментарии:

1. Я проверил это. Это кажется многообещающим. Но, как упомянул автор, он не завершен. Мы получаем ошибку при подключении к удаленной машине. Мы пытаемся решить эту проблему.

2. Привет, мы попробовали, но не смогли решить проблему. При подключении к удаленному компьютеру мы получаем ошибку тайм-аута.

3. Привет, мы попробовали, но не смогли решить проблему. При подключении к удаленному компьютеру мы получаем ошибку тайм-аута.

4. Привет, заходили ли вы на сайт автора SharpSSH

5. Использование исходного кода непосредственно с сайта автора сработало для нас. большое спасибо за помощь.

Ответ №2:

Простой способ выполнить это с помощью System.Диагностика.Процесс

 
// Start the child process.
 Process p = new Process();
 // Redirect the error stream of the child process.
 p.StartInfo.UseShellExecute = false;
 p.StartInfo.RedirectStandardError = true;
 p.StartInfo.FileName = "Write500Lines.exe";
 p.Start();
 // Do not wait for the child process to exit before
 // reading to the end of its redirected error stream.
 // p.WaitForExit();
 // Read the error stream first and then wait.
 string error = p.StandardError.ReadToEnd();
 p.WaitForExit();
  

Комментарии:

1. Спасибо, Терренс. Приложение C # выполняется в среде Windows, и мне нужно подключиться к удаленному блоку unix, чтобы выполнить там сценарий оболочки. Существует ли какой-либо прямой метод для этого?

Ответ №3:

Даже у меня была такая же проблема, я искал решение в Google около 1 месяца.

Наконец, я решил использовать plink.exe (версия командной строки для putty.exe ) для подключения к unix box и выполнения скрипта там.

Вы должны использовать plink через процесс c #, я пробовал это, и это работает потрясающе.

Но теперь я сталкиваюсь с проблемой, с которой я сталкиваюсь, когда я запускаю скрипт из процесса c #, я не могу передать аргументы этому скрипту. Вероятно, было бы обрядом сказать, что я не знаю, как это сделать.

С уважением -Aakash

Комментарии:

1. Привет, Aakash, как сказал OnesimusUnbound, ознакомьтесь с SharpSSH с исходного сайта, tamirgal.com/blog/page/SharpSSH.aspx

2. Да, Хари, но мне больше понравился plink, чем SharpSSH, plink более стабилен.