¿Por qué falla mi comando curl cuando se ejecuta a través de AppleScript, pero funciona bien cuando lo ejecuto directamente en una terminal?

Aug 19 2020

Estoy tratando de escribir un manuscrito para controlar un proyector instalado usando su interfaz web incorporada. Tengo un comando curl que hace ping a la URL adecuada y puedo controlar el proyector según sea necesario desde la línea de comandos, cuando lo construyo en un código de aplicación (requerido por mi software de control de espectáculos)

Mi applecript actualmente se ve así:

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

La display dialoglínea es para depurar para mostrar cómo se verá el comando curl, cuando ejecuto esto obtengo lo siguiente:

/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

Lo que parece correcto. Si agrego comillas alrededor de la URL, puedo ejecutar este comando en la terminal sin problemas y obtener el efecto deseado, sin embargo, Applescript continuará arrojando el siguiente error:

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

Parece que curl se está ejecutando pero no llega al servidor web del proyector para activar el control, también error "sh: -o: command not foundme hace pensar que el comando no se está analizando / pasando correctamente.

¿Qué estoy haciendo mal aquí?

Respuestas

2 user3439894 Aug 19 2020 at 22:00

Mientras

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

funciona bien en un navegador , no en un shell .

Para resolver el problema, debe citar la URL .

En set curlScript to ...cambio theUrla theUrl's quoted formo:quoted form of theUrl