Pergunta

Eu estou escrevendo um script para transferir alguns arquivos sobre sftp. Eu queria fazer a transferência como uma transferência de local de montagem do diretório com sshfs porque faz criar a estrutura de diretório necessário muito mais fácil. O problema que estou tendo é que eu estou inseguro sobre como lidar com a situação de não ter uma conexão de rede. Basicamente eu preciso de uma maneira de dizer se ou não os sshfs comando falhou. Alguma idéia de como fazer com que o script para a fiança se o diretório remoto não pode ser montado?

Foi útil?

Solução

Apenas testar se sshfs retorna 0 (sucesso):

sshfs user@host:dir mountpoint || exit 1

As obras acima porque em festa a-ou lógica || executa avaliação curto-circuito . Uma solução mais agradável que permite que você imprima uma mensagem de erro é o seguinte:

if !( sshfs user@host:dir mountpoint ); then
  echo "Mounting failed!"
  exit 1
fi

Editar:

Gostaria de salientar que esta é a forma como você verificar o sucesso da aplicação praticamente qualquer bem comportado na maioria das plataformas. - Sparr 1 min atrás

De fato. Para elaborar um pouco mais: a maioria das aplicações retornar 0 em caso de sucesso, e outro valor em caso de falha. O shell sabe disso, e, portanto, interpreta um valor de retorno de 0 como verdadeira e qualquer outro valor como falso. Daí a lógica, ou e o teste negativo (usando o ponto de exclamação).

Outras dicas

Eu estava tentando verificar se um diretório não era um ponto de montagem para uma sshfs montar. Usando o exemplo acima falhou:

if !( mountpoint -q /my/dir ); then
    echo "/my/dir is not a mountpoint"
else
    echo "/my/dir is a mountpoint"
fi

O erro: -bash: !( mountpoint -q /my/dir ): No such file or directory

I alterada meu código com o seguinte e teve sucesso:

if (! mountpoint -q /my/dir ); then
    echo "/my/dir is not a mountpoint"
else
    echo "/my/dir is a mountpoint"
fi
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top