/dev/tty: нет такого устройства или адреса - только в скрипте

Я тяну волосы за это. Я просмотрел все результаты Google для /dev/tty: такого устройства или адреса нет, ни одно из них не относится к тому, что я делаю / ни одно из решений не является успешным.

У меня есть сценарий, который ssh'es на другую машину (с использованием открытых ключей) и запускается сам (с другими параметрами - он не зацикливается). Вызовите этот rpmInstallScript.bash

В какой-то момент сценария он запускает rpm -ivh для установки некоторых пакетов RPM. Во время установки одного из этих пакетов файл помещается в / var / tmp с именем rpm-tmp.[6 случайных символов]

Этот файл является скриптом, и я думаю, что он выполняется в какой-то момент во время установки rpm.

В сценарии есть несколько случаев

echo [something] > /dev/tty 

или же

echo [something] | tee [something] > /dev/tty.

Все эти случаи не работают с /dev/tty: нет такого устройства или адреса. Если я захожу в машину вручную и самостоятельно выполняю rpm-пакеты, запускаю скрипт rpm-tmp или запускаю rpmInstallscript.bash, он работает нормально.

Я подключаюсь к удаленной машине с помощью ssh -t, поэтому там должен быть tty, правильно?

Я не понимаю, почему это не работает, особенно потому, что делать это вручную, даже без опции -t, работает нормально. Единственное, о чем я могу думать, это то, что это не интерактивная сессия - но / dev / tty все еще должен существовать, верно?

Изменить - ошибка возникает из-за:

ssh -t root@[machine] -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null <<DONE
./rpmInstallScript.bash

где rpmInstallScript.bash запускает rpm -ivh, результирующий сценарий, помещенный в / var / tmp, использует>/dev/tty - это то, что терпит неудачу

Снова отредактируйте: использование -tt дает:

tcgetattr: Inappropriate ioctl for device

Только при запуске из скрипта - запуск ssh -tt вручную, а затем проверка эха> / dev / tty работает нормально.

Я могу только предположить, что это неспособность принудительно создать tty.

Есть ли другой способ "сгенерировать" tty? Могу ли я просто подделать его, создав файл с именем /dev/tty?

1 ответ

Пытаться -tt чтобы увидеть, работает ли это.

Со страницы руководства ssh,

Multiple -t options force tty allocation, even if ssh has no local tty.

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