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