/ dev / tty: nenhum dispositivo ou endereço - somente em um script

6

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?

    
por Brydon Gibson 09.06.2016 / 21:23

1 resposta

2

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.

    
por 09.06.2016 / 22:15

Tags