A variável atribuída dentro do comando ssh não retorna o valor adequado

3

Estou executando o comando abaixo na parte ssh do meu script. O comando destina-se a reduzir o tamanho do arquivo da opção ls e armazená-lo em uma variável. Em seguida, imprima a variável:

echo "Enter srouce file";
read src_file;
src_size ='ls -latr $src_file | awk  '{ print $5 }' ';
echo "The source file size is $src_size ";

Isso funciona bem quando é executado na linha de comando.

Quando eu tento o mesmo comando dentro de um script via ssh :

ssh user@server "echo "enterfile";read src_file;echo "enter path ";read path;cd $path;src_size='ls -latr $src_file | awk  '{ print $5 }' ' ; echo The source file size is $src_size;"

Isso falha. Ele armazena algum valor temporário local e retorna o mesmo em vez do tamanho correto do arquivo.

    
por user73405 23.06.2014 / 21:55

2 respostas

3

Use um script para evitar atrapalhar seu comando ao citar problemas.

É mais limpo, mais gerenciável e parece melhor:)!

Por exemplo basta fazer isso:

echo "Enter source file"
read src_file
ssh user@server 'bash -s' < /path/to/local_script.sh "$src_file"

Conteúdo de local_script.sh :

#!/bin/bash
src_file="$1"
src_size ='ls -latr $src_file | awk  '{ print $5 }''
echo "The source file size is $src_size "

Não se esqueça de adicionar o caminho ao seu local_script.sh :)

    
por 23.06.2014 / 22:19
2

Você não pode aninhar aspas duplas dentro de outras aspas duplas sem escapar - e colocando os backticks entre aspas duplas, eles estão sendo avaliados na máquina local e não no controle remoto.

Algo parecido com isso deve fazer o que você está tentando realizar:

ssh user@server 'echo "Enter file: "; read src_file; echo "Enter path: "; read path; cd $path; src_size='ls -latr $src_file | awk  "{ print \ }"'; echo "The source file size is $src_size;"'

Note que precisei alterar o '{ print $5 }' para "{ print \ }" , escapando de $ , porque agora ele está entre aspas duplas, em vez de simples, e não quero que $5 seja interpretado pelo shell. / p>     

por 23.06.2014 / 22:21