Como sair do script na sessão ssh?

Como sair do script na sessão ssh?

Meu script contém um sshcomando para fazer login no servidor remoto e executar alguns comandos. O comando verifica se existe um arquivo e se não, ele deve sair de todo o script.

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 estiver presente. Mas em outro caso, se o arquivo não existir, o comando de saída simplesmente sai 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.

Responder1

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

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

Conteúdo de 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 em seu comando a ser 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 aspas simples ', elas impedem que seu comando sejaexpandido.

Também verifiquei a inexistência de $filenameprimeiro para reduzir linhas de código e usei tabulações/espaços em branco.

Para tornar seu comando mais legível, tente isto

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

Fonte

informação relacionada