я вытягиваю свои волосы из-за этого. Я просмотрел все результаты 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/телетайп: нет такого устройства или адреса. Если я ssh в машину вручную и либо rpm пакеты самостоятельно, запустите сценарий rpm-tmp или запустите rpmInstallscript.Баш, все нормально работает.
я подключаюсь к удаленной машине с ssh-t, поэтому должен быть tty, правильно?
Я не понимаю, почему это не работает, особенно потому, что делать это вручную, даже без опции-t, работает нормально. Единственное, о чем я могу думать, это то, что это не интерактивная сессия, но /dev/tty все еще должен существовать, правильно?
Edit - ошибка возникает из:
ssh -t root@[machine] -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null <<DONE
./rpmInstallScript.bash
где rpmInstallScript.бить запускает rpm-ivh, результирующий скрипт помещенный в /var/tmp использует > / dev / tty - вот что выходит из строя
редактировать снова :
через -ТТ дает :
tcgetattr: Inappropriate ioctl for device
только при запуске из скрипта-вручную запуск ssh-tt, а затем echo test > / dev / tty работает нормально.
Я могу только предположить, что это неспособность заставить создать tty.
есть ли другой способ "генерировать" tty? Могу ли я просто подделать его, создав файл с именем/dev / tty?