Desejo suprimir a mensagem de erro "no access to tty"?

2

Eu tenho um script bash onde eu uso ssh para se conectar a outro servidor e executar alguns comandos lá. Eu encontrei alguns sites que o erro ( Warning: no access to tty (Bad file descriptor). Thus no job control in this shell. ) é uma mensagem amigável, mas meu script bash fica "preso". Nenhum outro comando é executado após essa mensagem aparecer. Outros fóruns disseram para usar ssh -t para suprimir a mensagem, mas ela não funciona para mim. Meu código é parecido com isto:

.
.
.
stty -echo
sshpass "pwd" ssh -o StrictHostKeyChecking=no [email protected] 'su -lc "rm -rf tmp"' 2>/dev/null
stty echo
.
.
.

A razão pela qual eu estou usando stty-echo é porque eu preciso mudar os usuários para root e a senha é exibida no terminal (o que eu não quero). Eu recebo a mensagem de erro ( Warning: no access to tty (Bad file descriptor). Thus no job control in this shell. ) depois de digitar a senha para root no servidor de conexão (ip: 1.1.1.1).

Alguma sugestão? Deixe-me saber se mais explicações são necessárias. Obrigado! (Minha versão do bash é GNU bash versão 3.2.51 (1))

EDITAR

A mensagem de erro que recebo quando removo 2>/dev/null é:

Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell. 
stty: standard input: Invalid argument
    
por Alias 27.08.2014 / 17:40

2 respostas

1

Você pode verificar se stdin é um terminal antes de usar stty :

if [[ -t 0 ]]; then stty -echo; fi
    
por 28.08.2014 / 21:22
0

Em vez de tentar esconder com segurança sua senha e root do terminal, por que não usar um par de chaves ssh? Se você executar o comando ssh-keygen , poderá gerar uma chave crypto.pub que, se você colocar no arquivo /root/.ssh/authorized_keys de cada host remoto, poderá simplesmente executar seu comando da seguinte forma: ssh [email protected] "rm -rf tmp" . Dessa forma, você não precisa sempre digitar sua senha novamente. O comando, se você quiser, também pode ser adicionado ao crontab e definido em uma programação regular, para que você possa gastar seu tempo fazendo outras coisas. Tudo isso presumindo que a máquina da qual você está gerando a chave, somente você tem acesso ou, para ser mais claro, a conta de usuário na máquina da qual você está gerando a chave não é uma conta compartilhada entre você e um usuário sudo. usuário não-sudo.

Se isso ajudar, mas precisar de uma explicação melhor, avise-nos e tentarei adicionar mais informações à minha resposta.

Isso pode ajudar se você nunca gerou um par de chaves antes:

    
por 28.08.2014 / 15:52

Tags