Meu script contém um ssh
comando 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 $filename
primeiro 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