Experimente -tt
para ver se funciona.
Da página de manual do ssh,
Multiple -t options force tty allocation, even if ssh has no local tty.
Estou puxando meu cabelo por isso. Analisei todos os resultados do Google para / dev / tty: nenhum desses dispositivos ou endereços, nenhum deles se aplica ao que estou fazendo / nenhuma das soluções é bem-sucedida.
Eu tenho um script que ssh'es em outra máquina (usando chaves públicas) e executa-se (com parâmetros diferentes - não faz um loop). Chame isso de rpmInstallScript.bash
Em um ponto do script, ele executa rpm -ivh para instalar alguns pacotes RPM. Durante a instalação de um desses pacotes, um arquivo é colocado em / var / tmp chamado rpm-tmp. [6 caracteres aleatórios]
Este arquivo é um script, e eu acho que é executado em algum momento durante a instalação do rpm.
No script, existem várias ocorrências de
echo [something] > /dev/tty
ou
echo [something] | tee [something] > /dev/tty.
Todas essas ocorrências falham com / dev / tty: nenhum dispositivo ou endereço. Se eu ssh na máquina manualmente e ou rpm os pacotes eu mesmo, executar o script rpm-tmp ou executar rpmInstallscript.bash, ele funciona bem.
Estou conectando a máquina remota com ssh -t, portanto deve haver um tty, correto?
Não vejo por que isso não está funcionando, especialmente porque fazê-lo manualmente, mesmo sem a opção -t, funciona bem. A única coisa em que consigo pensar é que não é uma sessão interativa - mas o / dev / tty ainda deveria existir, correto?
Editar - os resultados do erro de:
ssh -t root@[machine] -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null <<DONE
./rpmInstallScript.bash
onde rpmInstallScript.bash executa rpm -ivh, o script resultante colocado em / var / tmp usa > / dev / tty - isto é o que falha
Edite novamente: usando -tt dá:
tcgetattr: Inappropriate ioctl for device
Somente ao executar a partir de um script - executar manualmente o ssh -tt e, em seguida, o teste de eco > / dev / tty funciona bem.
Eu só posso supor que isso é uma falha ao forçar a criação de um tty.
Existe alguma outra maneira de "gerar" um tty? Posso simplesmente falsificar isso fazendo um arquivo chamado / dev / tty?
Experimente -tt
para ver se funciona.
Da página de manual do ssh,
Multiple -t options force tty allocation, even if ssh has no local tty.