Обвязка нескольких строк в ssh

Я установил свое собственное приложение в качестве оболочки пользователя на удаленном хосте. Мое приложение читает из стандартного ввода и выводит вывод на стандартный вывод.

Если я сделаю ssh user@remotehost.com и введу несколько строк текста, приложение будет работать как положено.

Однако, если я сделаю это:

ssh user@remotehost.com < file.txt

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

Есть какие-нибудь подсказки?

0
задан 25 August 2019 в 22:29

1 ответ

Я подозревал бы Ваше приложение. Это пытается записать STDERR и перестало работать? Это регистрирует что-нибудь? Как это буферизует свой вход? (Если ответ нисколько не, то остальная часть Вашего входа прибывает, в то время как приложение не слушает). Какая система является "удаленным хостом"?

Это работает на меня:

walt@bat:~(0)$ seq 1 4 >14.txt; ssh localhost <14.txt
Pseudo-terminal will not be allocated because stdin is not a terminal.
walt@localhost's password: 
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.15.0-58-generic x86_64)

-bash: line 1: 1: command not found
-bash: line 2: 2: command not found
-bash: line 3: 3: command not found
-bash: line 4: 4: command not found

, Возможно, Вы могли использовать expect, или один из его вариантов:

walt@bat:~(127)$ apt-cache search expect | grep -w expect
empty-expect - Run processes and applications under pseudo-terminal
expect - Automates interactive applications
expect-lite - quick and easy command line automation tool
libjs-expect.js - behavior driven test assertions - JavaScript library
libnet-scp-expect-perl - Wrapper for scp to send passwords via Expect
libtest-expect-perl - module for automated driving and testing of terminal-based programs
node-expect.js - behavior driven test assertions - Node.js module
tcl-expect - Automates interactive applications (Tcl package)
tcl-expect-dev - Automates interactive applications (development)
1
ответ дан 23 October 2019 в 04:35

Другие вопросы по тегам:

Похожие вопросы: