/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.