Como sair do script na sessão ssh?

0

Meu script contém um comando ssh para acessar o servidor remoto e executar alguns comandos, O comando verifica se existe um arquivo e, se não, ele deve sair do script inteiro.

ssh $user@$hostname "if[ -f $filename];then 
  echo"file exists Proceeding next steps;
else 
  "echo file doesn't exist";
   exit 1;
fi"

No entanto, o comando acima é executado com sucesso se o arquivo presente Mas em outros casos, se o arquivo não existir, o comando exit sairá da sessão ssh

Ele ainda continua com outros comandos no script, em vez de sair do script.

Por favor me ajude com suas sugestões.

    
por user73280 22.06.2014 / 14:55

1 resposta

2

Para executar um script com ssh, que precisa de certas variáveis definidas anteriormente, por exemplo, seu $filename , faça o seguinte:

ssh user@host 'bash -s' < local_script.sh "$filename"

Conteúdo do local_script.sh:

#!/bin/bash
[ $# -ne 1 ] && echo '$0 needs at least 1 parameter' 1>&2 && exit 2
filename="$1"

if [ ! -f "$filename" ]; then
  echo "[ $filename ] does not exist"
  exit 1
fi
echo "[ $filename ] exists"

Se você não precisa de nenhuma variável passada no seu comando executado, isso funciona:

ssh user@host '
  if [ ! -f "test/stuff" ]; then
    echo "File does not exist"
    exit 1
  fi
  echo "File exists"
'

Cuidado com as citações simples ' , elas impedem que seu comando seja expandido .

Também verifiquei a inexistência de $filename primeiro para reduzir as linhas de código e usar as guias / espaços em branco.

Para tornar seu comando mais legível, tente isso

ssh user@host <<'ENDSSH'
  if [ ! -f "test/stuff" ]; then
    echo "File does not exist"
    exit 1
  fi
  echo "File exists"
ENDSSH

Fonte

    
por 22.06.2014 / 15:06