Терминальный выход без выполнения действий - PullRequest
0 голосов
/ 22 сентября 2019

Я создал скрипт, в котором есть блок запуска кода терминала для извлечения изображения с сервера по FTP.

Когда я запускаю скрипт в редакторе скриптов, все в порядке: запуск скриптаТерминал, откройте сеанс FTP, установите путь назначения, получите файлы, удалите их с сервера, закройте соединение, дождитесь окончания активности Терминала и выйдите из него.

Но когда я запускаю свой скрипт как приложениепримерно в 90% случаев приложение запускает терминал, а затем терминал сразу же закрывается.Когда Терминал, кажется, правильно «получает» команды FTP, соединение выполняется, получение файла и так далее.В совершенстве.Но это происходит только в нескольких случаях.

Вот последний код, который у меня есть для этой части:

  tell application "Terminal"
    activate

    -- Wait for "no more activity"
    set frontWindow to window 1
    repeat until busy of frontWindow is false
        delay 1
    end repeat

    -- Perform FTP actins
    set shell to do script "ftp -i ftp://user_ftp:pass_ftp@host_ftp/" in window 1
    do script "lcd ~/Desktop/tmp_instagram/" in shell
    do script "mget *.jpg" in shell
    do script "mdel *.jpg" in shell
    do script "bye" in shell
    -- Wait for no more activity
    set frontWindow to window 1
    repeat until busy of frontWindow is false
        delay 1
    end repeat

end tell

tell application "Terminal" to quit saving no -- Saving no to avoid conf alert

Чтобы избежать потери времени, вот некоторые из тестов, которые я провел, но безуспешно:

  • Установка всей команды FTP в одну строку так.
  • Установите задержку 5 после активации, а не повторение при занятом
  • Установите задержку после команды ftp

Фактически, Терминал, кажется, закрывается до получения команды FTP (немедленно открывается и закрывается).

1 Ответ

0 голосов
/ 22 сентября 2019

Благодаря комментарию Марка Сетчелла я попытался без использования команды «shell», и на самом деле это, кажется, ключ.Вот фрагмент кода, который работает правильно:

    tell application "Terminal"
    activate

    set w to window frontmost
    do script "ftp -i ftp://xxxxx:yy@dddddd/" in w
    do script "lcd ~/Desktop/tmp_aarecno_instagram/" in w
    do script "mget *.jpg" in w
    do script "mdel *.jpg" in w
    do script "bye" in w

    set frontWindow to window 1
    repeat until busy of frontWindow is false
        delay 1
    end repeat

end tell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...