Команда SSH Remote не работает должным образом (проблемы с чтением)
У меня есть скрипт на моем сервере с именем test.sh
:
#!/bin/bash
read -p "Select an option [1-4]: " option
echo "You have selected $option"
Когда я запускаю его через ssh вручную, я вижу это:
me@me:~$ ssh root@server
root@server's password:
[...]
root@server:~# bash test.sh
Select an option [1-4]: 48
You have selected 48
Когда я запускаю его как удаленную команду ssh, я вижу это:
me@me:~$ ssh root@server 'bash test.sh'
root@server's password:
48
You have selected 48
Я не удовлетворен этим выводом, потому что он отсутствует Select an option [1-4]:
строка приглашения и оригинальный скрипт, который я получил test.sh
содержит много строк интерактивного диалога, как это, и я нуждаюсь в них всех.
я знаю это read
печатает это быстро stderr
поэтому я попытался запустить скрипт с помощью следующих команд на случай, если stderr опущен, но вывод остается прежним:
ssh root@server 'bash test.sh >&2'
ssh root@server 'bash test.sh' >&2
ssh root@server 'bash test.sh 2>&1'
ssh root@server 'bash test.sh' 2>&1
Почему это происходит и как заставить удаленную команду ssh работать как положено?
UPD
Я изменил test.sh
к этому:
#!/bin/bash
echo Connected
read -p "Select an option [1-4]: " option
echo "You have selected $option"
но в выводе все еще отсутствует строка приглашения:
me@me:~$ ssh root@server 'bash test.sh'
root@server's password:
Connected
66
You have selected 66
1 ответ
Вам нужно использовать -t
вариант в ssh
назначить псевдо-терминал ssh
сессия:
ssh -q -t root@server 'bash test.sh'