Почему моя команда curl не работает при запуске через applescript, но работает нормально, когда я запускаю непосредственно в терминале?

Aug 19 2020

Я пытаюсь написать приложение для управления установленным проектором с помощью встроенного веб-интерфейса. У меня есть команда curl, которая проверяет соответствующий URL-адрес и может управлять проектором по мере необходимости из командной строки, когда я встраиваю ее в applescript (требуется моим программным обеспечением для управления шоу).

Мой applescript в настоящее время выглядит так:

set theUrl to "http://192.168.0.103/cgi-bin/proj_ctl.cgi?key=shutter_on&lang=e&osd=on"
set theUsername to "dispadmin" -- set this to the username for the projector
set thePassword to "password" --set this to the password for the projector

set myFile to (POSIX path of (path to temporary items)) & "curl_downloaded_file.xml"

set curlScript to "/usr/bin/curl --connect-timeout 1 --anyauth --user" & " " & theUsername & ":" & thePassword & " -L " & theUrl & " -o " & myFile

display dialog "my variable: " & curlScript

do shell script curlScript

display dialogЛиния для отладки , чтобы показать , что команда локона будет выглядеть, когда я запускаю это я получаю следующее:

/usr/bin/curl --connect-timeout 1 --anyauth --user dispadmin:password -L http://192.168.0.103/cgi-bin/proj_ctl.cgi?key=shutter_on&lang=e&osd=on -o /private/var/folders/zs/f1hpkd2x281fvzyh4zd5dpcw0000gn/T/TemporaryItems/curl_downloaded_file.xml

Что кажется правильным. Если я добавлю кавычки вокруг URL-адреса, я могу без проблем запустить эту команду в терминале и получить желаемый эффект, однако Applescript продолжит выдавать следующую ошибку:

error "sh: -o: command not found
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100   350  100   350    0     0  38888      0 --:--:-- --:--:-- --:--:-- 38888

100   267    0   267    0     0   5235      0 --:--:-- --:--:-- --:--:--  5235" number 127

Похоже, что curl запущен, но он не попадает на веб-сервер проектора, чтобы вызвать управление, а также error "sh: -o: command not foundзаставляет меня думать, что команда не анализируется / передается правильно.

Что я здесь делаю не так?

Ответы

2 user3439894 Aug 19 2020 at 22:00

В то время как

http://192.168.0.103/cgi-bin/proj_ctl.cgi?key=shutter_on&lang=e&osd=on

работает отлично в браузере , это не в оболочке .

Чтобы решить проблему, вам нужно указать URL-адрес .

При set curlScript to ...изменении theUrlна либо, theUrl's quoted formлибо:quoted form of theUrl