Как сценарий загрузки файла с удаленного хоста

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

в папке /Pair1[1252 sizesIN_S-WW001_20160418100715.out IN_S-WW001_20160418100715.txt

в папке /Pair2[1254 impressionar.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 вместо проверки пары за парой. Я не знаю, как классифицировать пару. Я плохо пишу сценарии, поэтому мне нужно попросить помощи.

0
задан 24 August 2016 в 10:07
1 ответ

A fir Loop déi Schleife ronderëm .out Dateie solle funktionnéieren. Folgend gëtt net gepréift well ech net vertraut sinn mat lftp a sengem Output.

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
0
ответ дан 24 November 2019 в 05:58

Теги

Похожие вопросы