2016-10-25 5 views
0

Дано:WinSCP ExecuteCommand с перенаправлением stdin?

var linuxCommmand = "/opt/ndmcli -x"; 
var linuxOptions = "sel stat pnum=157 detail=yes;\nquit;"; 
SSH.ExecuteCommand(String.Format("{0} <<!!\r\n{1}\r\n!!\r\n", linuxCommand, linuxOptions)); 

Consulting журнал сеанса показывает команда правильно, с этим:

2016-10-25 14:12:49.433 Script: call /opt/cdunix/ndm/bin/ndmcli -x <<!! 
2016-10-25 14:12:49.433 sel stat pnum=157 detail=yes; 
2016-10-25 14:12:49.433 quit; 
2016-10-25 14:12:49.433 !! 
2016-10-25 14:12:49.433 Executing user defined command. 
2016-10-25 14:12:49.433 /opt/cdunix/ndm/bin/ndmcli -x <<!! 
2016-10-25 14:12:49.433 sel stat pnum=157 detail=yes; 
2016-10-25 14:12:49.433 quit; 
2016-10-25 14:12:49.433 !! ; echo "WinSCP: this is end-of-file:$?" 
2016-10-25 14:13:04.437 Waiting for data timed out, asking user what to do. 
2016-10-25 14:13:04.437 Asking user: 
2016-10-25 14:13:04.437 **Host is not communicating for 15 seconds. 
2016-10-25 14:13:04.437 
2016-10-25 14:13:04.437 Wait for another 15 seconds?**() 

Есть ли какой-либо причине я не мог использовать STDIN Перенаправление с WinSCPNet-х ExecuteCommand?

Спасибо!

**** **** UPDATE Жутко, если добавить косую пространство:

var linuxCommmand = "/opt/ndmcli -x"; 
var linuxOptions = "sel stat pnum=157 detail=yes;\nquit;"; 
SSH.ExecuteCommand(String.Format("{0} <<!!\r\n{1}\r\n!!\r\n ", linuxCommand, linuxOptions)); 

Это все работает отлично:

2016-10-25 15:58:03.489 Script: call /opt/cdunix/ndm/bin/ndmcli -x <<!! 

2016-10-25 15:58:03.489 sel stat pnum=157 detail=yes; 
2016-10-25 15:58:03.489 quit; 

2016-10-25 15:58:03.489 !! 

2016-10-25 15:58:03.489 
2016-10-25 15:58:03.489 Executing user defined command. 
2016-10-25 15:58:03.489 /opt/cdunix/ndm/bin/ndmcli -x <<!! 

2016-10-25 15:58:03.489 sel stat pnum=157 detail=yes; 
2016-10-25 15:58:03.489 quit; 

2016-10-25 15:58:03.489 !! 

2016-10-25 15:58:03.489 ; echo "WinSCP: this is end-of-file:$?" 
2016-10-25 15:58:03.550 Script: 
2016-10-25 15:58:03.550 Script:  ************************************************************** 
2016-10-25 15:58:03.550  ************************************************************** 
2016-10-25 15:58:03.550 Script:  *               * 
2016-10-25 15:58:03.550  *               * 
2016-10-25 15:58:03.550 Script:  *   Licensed Materials - Property of IBM   * 
---- (log continues, and I get my expected output) ---- 
+0

Confused ... есть вопрос вопрос здесь? – Darren

+0

Извините, мой вопрос в начале, я перестрою, чтобы сделать его более понятным. Благодаря! – John

+0

Что такое 'ndmcli'? Что оно делает? Что такое команда 'sel'? –

ответ

0

В новой строки будет полностью запутать WinSCP ,

Команда на самом деле не выполнена правильно, так как конечный !! должен быть один на линии, а это не так.


Вы должны поставить все на одной линии.

Это может работать:

(echo sel stat pnum=157 detail=yes; & echo quit;) | /opt/cdunix/ndm/bin/ndmcli -x 
+0

От самого человека! Позвольте мне попробовать! Спасибо :) – John

+0

Эхо через трубу не сработало - что имеет смысл, lol. ndmcli - автономный исполняемый файл, который затем ожидает ввода sel stat pnum = 157 detail = yes; quit ;, а затем выводит необходимую информацию. – John

+0

команда должна иметь окончательный !! на своей собственной линии, так как \ r \ n как до, так и после финала !!. Выполняет ли WinSCP какой-то разбор команды перед ее отправкой? – John