FTP загрузите последний файл, используя FileMaker или Applescript - PullRequest
0 голосов
/ 21 мая 2018

В настоящее время я использую Вставить URL-адрес, чтобы загрузить определенные файлы с внешнего FTP-сервера, который мне удалось отлично работать, используя следующие параметры curl

- user "& $ usr &":" & $ pw & "-o Stock-Summary.csv"

Это работает так, как мы надеемся, и загружает файл с FTP, однако компания, которая предоставляет нам эти файлы, "переехала"так сказать, "стойка ворот".

По какой-то причине они теперь ставят префикс и суффикс случайных чисел к указанному файлу, поэтому мне нужно настроить его, чтобы каким-то образом получить только последнюю версию этого файла, которая теперь выглядит примерно так-

7818023-Stock_Summary-035831

Буду очень признателен за любые советы или другие подходы, поскольку я просто новичок, пытающийся помочь другу семьи.

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Ознакомьтесь с предыдущим ответом, Извлечение последнего измененного файла в каталоге по FTP с использованием bash-скрипта с curl .

В частности, эта строка Bash,

curl --user <<USERNAME>>:<<PASSWORD>> ftp://<<SERVERURL>> 2>/dev/null | grep "Stock_Summary" | awk -F\  '{print $9}' | sort -n -t- -k3,4 -k1,2 -k2,2 | tail -1

вернет имя последнего измененного файла в каталоге, который соответствует заданному шаблону grep.Затем вы можете взять результат этого вызова и ввести имя файла (с дополнительными идентификаторами) в существующий AppleScript.

set theFileName to do shell script "<<SHELL LINE ABOVE>>"

Возможно, вам придется поиграться с шаблоном файла, чтобы grep получил что-то, чтобудет работать для вас.

Затем вы вернетесь к существующему коду и сделаете что-то вроде:

--user " & $usr & ":" & $pw & " -o " & theFileName

Примечание: удалите и заполните все между, включая << и>>.

В AppleScript это может выглядеть так:

on GetFileNameToPull(server, username, password, filePattern)
    set theScriptToRun to "curl --user " & username & ":" & password & " ftp://" & server & " 2>/dev/null | grep '" & filePattern & "' | awk -F\\  '{print $9}' | sort -n -t- -k3,4 -k1,2 -k2,2 | tail -1"
    set theFileName to do shell script theScriptToRun
    return theFileName
end GetFileNameToPull

on GetFileNameFromFTPServer(server, username, password, remoteFileName, localFileName)
    set theScriptToRun to "curl --silent --show-error --user " & username & ":" & password & " ftp://" & server & "/" & remoteFileName & " -o " & localFileName
    do shell script theScriptToRun
end GetFileNameFromFTPServer

on run
    set username to "USERNAME"
    set thePassword to "PASSWORD"
    set server to "SERVERNAME"

    set pathToDownload to "/path/to/download/to"

    set theRemoteFileName to GetFileNameToPull(server, username, thePassword, "Stock_Summary")
    set theLocalFileName to pathToDownload & "/" & theRemoteFileName

    GetFileNameFromFTPServer(server, username, thePassword, theRemoteFileName, theLocalFileName)
end run
0 голосов
/ 21 мая 2018

Если вам нужно извлечь «Stock_Summary» из нового идентификатора файла, тогда это будет сделано:

on StripNumbers(FileLong)
    set x to offset of "-" in FileLong
    set temp to characters (x + 1) thru -1 of FileLong as string
    set x to offset of "-" in temp
    set temp to characters 1 thru (x - 1) of temp as string
    return temp
end StripNumbers

on run
        set FileLong to "7818023-Stock_Summary-035831"
        set FileShort to my StripNumbers(FileLong)
end run

Затем вы можете добавить расширение и запустить скрипт FTP.

...