2015-07-21 2 views
0

У меня странная проблема. Я написал сценарий, который в основном запускает скрипт perl на удаленном сервере с помощью ssh.не в состоянии принять пользовательский ввод в perl

Этот скрипт работает нормально, но после завершения вышеуказанной операции он попросит пользователя выбрать следующую операцию.

он показывает параметры в командной строке, но пока я даю какие-либо данные, они не отображаются на экране, даже после того, как вы вошли в него, он останется таким же.

Я не понимаю, что такое точная проблема, но, похоже, есть некоторая проблема с командой ssh, потому что если я комментирую команду ssh, она работает нормально.

OPERATION: 
print "1: run the script in remote server \n2: Exit\n\nEnter your choice:"; 
my $input=<STDIN>; 
chomp($input); 
.......... 
sub run_script() 
{ 
    my $com="sshg3.exe server -q --user=user --password=pass -exec script >/dev/null"; 
system("$com"); 

goto OPERATION; 
} 

после завершения этого SSH сценария он показывает в экране:

1: запустить удаленный скрипт 2: выход

Введите свой выбор:

, но пока я даю любой вход он не отображается на экране до тех пор, пока я не выйду из него, используя crtl C.

Пожалуйста, кто-нибудь может помочь, здесь?

ответ

1

Вы можете перенаправить вывод в командной строке, если опция -n недоступна для вас.

попробуйте этот вариант, он может сработать для вас.

system("$com />null"); 
2

Один из классических подводных камней с ssh это - что он обычно работает в интерактивном режиме, и как таковые будут присоединять STDIN по умолчанию.

Это может привести к тому, что STDIN потребляется ssh, а не вашим скриптом.

Попробуйте это вместо ssh -n.

+0

благодарит за ваш ответ. , но проблема в том, что для этого я использую сторонний SSH-модуль, поэтому для меня нет опции -n. есть ли другой способ остановить это? – raj

Смежные вопросы