Назад | Перейти на главную страницу

Как скрипт скачать файл с удаленного хоста

На удаленном сервере всегда есть пара файлов, например: -

в папке / Pair1

IN_S-WW001_20160418100715.out IN_S-WW001_20160418100715.txt

в папке / Pair2

ar.MON.20160226.output.ZZ.out ar.MON.20160226.output.ZZ.txt

Это просто пример файлов. Их будет много за один день.

Имя файла в паре всегда одинаковое, за исключением отметок времени. С другого сервера мне нужно отправить SFTP на удаленный сервер и проверить одну пару на одну пару.

Логика: сценарий должен проверить наличие файла .out, а затем захватить / загрузить файл .txt (из пары). После успешной передачи / загрузки файла .txt сценарий вернется на удаленный сервер и удалит файл .out.

Это мой тестовый сценарий: -

lftp sftp://$UserID:$PASSWORD@10.x.x.x -e "ls /home/adm/testfiles|grep .out; bye" >> $LOG
if [ $? -eq 0 ]
then
echo "Files exist, getting *.txt" >> $LOG
lftp sftp://$UserID:$PASSWORD@10.x.x.x -e "mget /home/adm/testfiles/*.txt -O /home/adm/test/ ; bye" >> $LOG
else
echo ".out files do not exist" >> $LOG
fi

Проблема в том, что он перечислит все файлы с расширением .out вместо проверки пары за парой. Я не знаю, как классифицировать пару. Я плохо пишу сценарии, поэтому мне нужно попросить помощи.

Цикл for, который обходит файлы .out, должен работать. Следующее не проверено, поскольку я не знаком с lftp и его выводом.

for file in $(lftp sftp://$UserID:$PASSWORD@10.x.x.x -e "ls /home/adm/testfiles|grep .out; bye")
do
  echo "Found .out file: $file"
  TXTFILE=$(echo $file | sed -e 's/.out$/.txt/')
  lftp sftp://$UserID:$PASSWORD@10.x.x.x -e "mget /home/adm/testfiles/$TXTFILE -O /home/adm/test/ ; bye"
  # Do any deleting here
done