ajuda do parâmetro SSH no Ubuntu Server

1

Eu tenho uma configuração de variável assim:

SSH_EXEC="ssh -X -o ControlPath=~/.ssh/master-$$ -o ControlPersist=60"

O parâmetro em questão é o -X , porque se eu chamar esse comando no meu script local

$SSH_EXEC user@server "./server_script.sh $aFile"

que, em poucas palavras, faz o seguinte:

if [ -e /path/"$1".name ] || [ -e /path/"$1" ]
then 
   do something
else
   error
   echo "/path/"$1".name"
   exit
fi  

Tudo funciona! Mas se eu substituir -X por -t , meu server_script falhará no else no teste. Eu prefiro não usar x11, mas não tenho certeza qual é a diferença que está causando falha em uma instância, e passar na outra.

EDITAR

Então eu só fiz mais solução de problemas e decidi ecoar o valor de /path/$1.name no servidor e é um lixo ilegível. Se meu $aFile nome fosse hello.name , o resultado do eco mostrará .nameello e também livrará o início do caminho quando eu usar -t no lugar de -X .

O que poderia estar causando a corrupção de minhas variáveis?

    
por hax0r_n_code 13.06.2013 / 16:26

1 resposta

2

A variável $aFile provavelmente tem um caractere Retorno de carro , fazendo com que o terminal retorne ao início da linha quando encontrado.

Como exemplo, o seguinte:

echo "/path/"hello^M".name"

saídas:

/.namehello

Esse tipo de coisa pode acontecer devido a um script de shell com finais de linha do , causando uma linha como

aFile = "hello"

para ser interpretado como

aFile = "hello"^M

Se for esse o caso, você deve conseguir converter seu script para usar finais de linha do Unix usando o utilitário dos2unix .

    
por 13.06.2013 / 17:47