Usar a opção -t
do ssh pode resolver seu problema, já que ele conecta um tty e define uma variável de ambiente TERM apropriada.
ssh -t host < script
Estou tentando executar um script bash em uma máquina remota. Se eu abrir uma conexão ssh em um terminal, posso facilmente executar o script. Mas quando eu corro assim:
ssh user@ip < /etc/script
Eu recebo um erro:
TERM enviroment variable not set.
O que estou fazendo de errado aqui?
Usar a opção -t
do ssh pode resolver seu problema, já que ele conecta um tty e define uma variável de ambiente TERM apropriada.
ssh -t host < script
Quando você redireciona a entrada, o cliente ssh provavelmente percebe que a entrada não está conectada a um TTY e decide que o TERM é inadequado.
Experimente colocar essas linhas em ~user/.bashrc
no host de destino:
if [ ! ${#TERM} > 0 ]
then
export TERM=<value>
fi
$ {# var } retorna o tamanho da string da variável var . Portanto, se o comprimento de TERM
for NULL (não definido) ou 0, você poderá definir manualmente seu valor TERM
.
Você também pode pensar em testar se $SSH_CLIENT
ou $SSH_CONNECTION
são diferentes de zero e testando apenas um valor TERM sob essas condições.
Finalmente, isso precisa ir em .bashrc
porque .bash_login
só é executado em shells de login.
Tags ssh bash environment-variables unix