Я тяну волосы за это. Я просмотрел все результаты 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?