#c# #linux #process #plink
#c# #linux #процесс #plink
Вопрос:
Я застрял с проблемой на много дней.
Я подключаюсь к Linux box и хочу запустить несколько скриптов и собрать обратно сгенерированный файл.
Шаги: 1) подключение 2) запуск некоторых сценариев (которые являются интерактивными и в какой-то момент требуют ввода) 3) получение файла, сгенерированного в результате.
1) Я подключаюсь к linux box через plink.exe (версия командной строки для putty.exe ) этот шаг выполнен успешно.
2) Я могу запускать скрипты, но при запуске скриптов ожидается некоторый ввод, я не могу понять, как передать эти входные данные скрипту. что происходит, так это зависание программы, поскольку скрипты не завершаются.
Эти входные данные фиксированы и варьируются в зависимости от определенных значений, я могу жестко закодировать эти значения в приложении / программе.
Пожалуйста, помогите мне в этом. Заранее спасибо -Akash
Комментарии:
1. Если plink не удался, вам нужно сначала решить это. Можете ли вы предоставить нам дополнительную информацию — об ошибке, как вы вызываете plink, как вы настроили свой SSH-сервер?
2. в оболочке bash мы запускаемся как $scriptname <аргументы>, поэтому посмотрим, поддерживает ли ваш plink API для передачи таких аргументов
3. Привет, Rup, соединение Plink работает нормально. Я могу подключаться к серверу и запускать команды. Ранее мы использовали putty.
4. не могли бы вы, пожалуйста, пояснить, почему, если Plink работает нормально, вы говорите, что этот шаг неудачен? Что в этом неудачного? Есть ли сообщение об ошибке?
5. Привет, Зеспри, извините за путаницу, по ошибке я написал это неудачно. Еще раз извините.
Ответ №1:
Вы можете использовать этот код
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "YourFile.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = "";//Arguments should be here
using (Process exeProcess = Process.Start(startInfo))
{
exeProcess.WaitForExit();
}
вы можете использовать exeProcess.StandardOutput.ReadToEnd(); для получения результатов
Комментарии:
1. Привет, Навид, спасибо за ответ. Я пробовал этот подход, но он не работает. В start.Info . Аргументы я передал аргументы, которые используются во время подключения.
2. Я использовал эти аргументы =»plink mysession echo привет, мир»; и в результате получается привет, мир