2 votos

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

Estoy intentando escribir un applescript para controlar un proyector instalado utilizando su interfaz web incorporada. Tengo un comando curl que hace ping a la URL apropiada y puede controlar el proyector como sea necesario desde la línea de comandos, cuando construyo esto en un applescript (requerido por mi software de control de espectáculos) me

Mi applescript actualmente tiene este aspecto:

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

El display dialog La línea es para la depuración 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 cual parece correcto. Si añado comillas alrededor de la URL puedo ejecutar este comando en el terminal sin problemas y obtener el efecto deseado, sin embargo, el Applescript seguirá escupiendo 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

Esto parece que curl se está ejecutando pero no golpea el servidor web del proyector para desencadenar el controll, también el error "sh: -o: command not found me hace pensar que el comando no está siendo analizado/pasado correctamente.

¿Qué estoy haciendo mal?

3voto

user3439894 Puntos 5883

Mientras que

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

funciona bien en un navegador no lo hace en un shell .

Para resolver el problema hay que citar el URL .

En set curlScript to ... cambiar theUrl para theUrl's quoted form o: quoted form of theUrl

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X