забрать файлы с удаленного сервера, а затем удалить - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть сценарий ожидающего, который извлекает файлы из удаленного местоположения на основе шаблона и помещает их в текущий каталог.После передачи я хочу удалить файлы, которые были извлечены из удаленного местоположения.Мой скрипт выполняет MGET и выполняет передачу.Я попытался использовать команду RM, основанную на шаблоне, который использовался для выполнения MGET для удаления файлов, но я могу удалить больше, чем извлек.Можете ли вы помочь мне удалить только те файлы, которые я извлек из удаленного местоположения?

$ env (SSH_FILE) \ r "- переменная шаблона в сценарии. Например: .835

 sftp> rm *.835*                                             
 Removing /EdifecsFTP/Inbound835/W6BA/90404B277947nCOR0.835  
 Removing /EdifecsFTP/Inbound835/W6BA/90404B277947nCORS.835 

Я НЕ ХОЧУ УДАЛИТЬ НА ОСНОВЕ ШАБЛОНА.

send "CD $env(SSH_CDIR)\r"
expect "No such file or directory"    {quit;exit 1}
send "LCD $env(SSH_LCD)\r"
expect "path name does not exist"     {quit;exit 1}
send "mget $env(SSH_FILE)\r"

send "rm $env(SSH_FILE)\r"

1 Ответ

1 голос
/ 08 апреля 2019

Что вы можете сделать:

  • после завершения mget получить список файлов в локальном каталоге, которые соответствуют шаблону:

    set local_files [glob -directory $env(SSH_LCD) -tails $env(SSH_FILE)
    
  • и удалите любое удаленное имя файла, которое соответствует:

    foreach f $local_files {
        send "rm $f\r"
        expect $prompt
    }
    
...