Verifique se toda a lista de arquivos existe via ssh e, se for o caso,

0

Eu tenho uma lista de arquivos que deve existir em um diretório remoto antes de enviar um email de confirmação. Por exemplo, minha lista é: file_list=example.txt testfile.txt . Eu sei como testar se cada arquivo individual existe como tal:

ssh [email protected] "test -e /path/to/file/example.txt"
if [ $? -eq 0 ]; then
    echo -e "Email body" | mail -s "File exists." "[email protected]"
fi

Mas como posso acessar cada arquivo da lista e confirmar se todos os arquivos existem neste diretório remoto? Dizer que três de quatro foram enviadas com sucesso por meio de sftp , eu precisaria sair com um erro de e-mail para o meu grupo dizendo apenas que vá fazer check-out em vez de continuar enviando ao cliente que todos os arquivos estão disponíveis. A lógica é talvez algo como:

ssh [email protected] "test - [$file_list]"
if [they all exist]; then
  successful -- email the client
else
  error -- email your group
  exit
fi
    
por kstats9pt3 13.09.2017 / 20:27

2 respostas

2

Você poderia tentar configurar um array no lado remoto de uma única conexão ssh e percorrê-lo; Se a lista de arquivos é estática e você pode soltar um script de shell no lado remoto, chamá-lo pode ser mais fácil. Caso contrário, você poderia configurar o array localmente e fazer um loop sobre ele, ssh'ing em cada tempo para testar a existência do arquivo:

files=(example.txt testfile.txt)
ok=0
for file in "${files[@]}"
do
  ssh [email protected] test -e "$file" && ((ok++))
done
if [ $ok -eq ${#files[@]} ]
then
  success, all $ok files made it
else
  failure, only $ok files made it
fi
    
por 13.09.2017 / 20:43
0

Defina a variável file e file1 e adicione os nomes dos arquivos.

file="/path/to/testfile.txt"
file1="/path/to/example.txt"

ssh [email protected]
if [[ -f "$file" && -f "$file1" ]]; then
    echo -e "Email body" | mail -s "File exists." "[email protected]"
else
  echo -e "Email body" | mail -s "File does not exists." "[email protected]"
  exit
fi

-f : Return true value if file exists and is a regular file.

    
por 13.09.2017 / 20:49

Tags