0 votos

Necesito ayuda para crear un demonio global para el servidor EyeFi

He estado tratando de encontrar una solución sin cabeza para transferir imágenes desde una tarjeta eyefi a mi mac. El software del proveedor es decente, pero sólo transfiere las imágenes si hay un usuario conectado al ordenador. Quiero utilizar las tarjetas eyefi en un entorno de oficina y quiero configurarlo para que las imágenes siempre se transfieran desde la tarjeta a mi servidor mac mini que ejecuta Mavericks Server.

Así que encontré esta referencia a una aplicación de Python que hace esto y se ejecuta en dispositivos synology. http://thijs.elenbaas.net/2013/03/installing-an-eye-fi-server-on-a-synology-nas/

No sé nada de Python, excepto que OSX lo tiene incorporado. Así que descargué el software de thijs.elenbaas.net/files/eyefiserver.tar.gz

y lo he configurado en mi mac. Parece ser básicamente un script llamado S99EyeFiServer.sh que ejecuta una aplicación Python llamada eyefiserver.py

Tuve que hacer algunos cambios en el S99EyeFiServer.sh script para que apunte a los directorios correctos, principalmente en función de dónde está instalado todo en mi mac Y el pythonpath por defecto que en mac es diferente que en synology.

En resumen, he puesto los archivos del servidor eyefi en una carpeta compartida y he modificado el script con las ubicaciones de los archivos como tales: PIDFILE=/Users/Shared/eyefi/eyefiserver/eyefiserver.pid DSTPATH=/Usuarios/Compartidos/eyefi/eyefiserver PYTHONPATH=/usr/bin

Ahora, si voy al terminal y hago S99EyeFiServer.sh restart o S99EyeFiServer.sh start. En el visor de procesos, puedo ver que se inicia un nuevo proceso llamado "Python" y voila la tarjeta comenzará a transferir imágenes. Así que, al menos sé que esta cosa puede trabajar en el mac.

Genial.

Sin embargo, esto sigue sin resolver mi problema. Necesito que esta cosa se ejecute siempre. No tiene ninguna interfaz gráfica ni requiere ninguna interacción, por lo que debería ser capaz de ejecutarlo como un demonio global, ¿verdad?

Así que, arranco launchcontrol y hago un .plist para este demonio global

Etiqueta com.eyefi.load ProgramaArgumentos /Usuarios/Compartido/eyefi/eyefiserver/rc.d/S99EyeFiServer.sh reiniciar RunAtLoad

Cargo esto, voy a job, hago clic en start. nada. no hay errores. La aplicación Python no se inicia. no hay imágenes.

¿Es porque estoy intentando ejecutarlo en una carpeta compartida? Así que copié todo en usr/local/eyefiserver, reconfiguré las rutas y lo intenté de nuevo. De nuevo, puedo iniciarlo desde la línea de comandos y funciona. Vuelvo a configurar el demonio de lanzamiento para que apunte al scriptde nuevo. Nada.

Luego traté de jugar con la configuración de usuario:grupo en launchcontrol, tratando de ejecutarlo como uno de mis usuarios, ya sea la configuración en la carpeta usr/local o en la carpeta compartida. Intenté una variedad de otras configuraciones de usuario y grupo.

¿Algún consejo para que esto funcione?

1voto

LCC Puntos 572

No apunte launchd al script sino al programa que ejecuta el script. Es importante que el programa no se 'daemonice' (se convierta en un proceso en segundo plano) a sí mismo. Este es el trabajo de launchd.

Ponga esto en su ProgramArguments y debería estar bien:

<key>ProgramArguments</key>
<array>
    <string>/Users/Shared/eyefi/eyefiserver/bin/eyefiserver.py</string>
    <string>/Users/Shared/eyefi/eyefiserver/etc/eyefiserver.conf</string>
    <string>/Users/Shared/eyefi/eyefiserver/var/eyefiserver.log</string>
</array>

1voto

yossis Puntos 428

Ok, he probado esto de nuevo en una instalación fresca de todo y lo tengo funcionando. Aquí están los detalles

Paso 1. En OSX Server, active Python en Websites

Paso 2. Instala el software de eyefi. Ponen el software en la tarjeta, así que sólo tienes que buscarlo allí y ejecutar el instalador.

Paso 3. Usando el software eye-fi helper, configura las preferencias de la tarjeta como quieras y añade la red wifi que necesites. Necesitas hacer esto en el ordenador que vas a utilizar como servidor de eyefi porque almacena el nombre de host local del ordenador en la tarjeta. También debes especificar el directorio al que quieres que se suban las fotos y los vídeos (no estoy 100% seguro de que necesites hacer esto). Desactivé las subidas a la nube y el acceso directo, pero activé la memoria interminable en la tarjeta para que las imágenes se autoborren de la tarjeta.

Luego, desactiva la aplicación eyefi helper y dile que no se cargue con el arranque.

Paso 4. Encuentre la clave de carga para su tarjeta eyefi yendo a ~/Libary/Eye-Fi/Settings.xml. Ábrelo con Xcode si puedes, es mucho más fácil encontrar las cosas. Usted está buscando algo como esto:

una larga cadena de unas 30 letras y números

También puedes encontrar la dirección MAC de la tarjeta en ese archivo, lo cual es bueno tener, especialmente si usas direcciones MAC para restringir el acceso a tu(s) red(es) wifi.

Paso 5. A continuación, debe descargar el software del servidor eyefi desde: http://thijs.elenbaas.net/files/eyefiserver.tar.gz

Lo puse en Aplicaciones.

Paso 6. A continuación, tiene que modificar install.sh antes de ejecutarlo.

Install.sh:

SRCPATH=/Applications/eyefiserver/eyefiserver

DSTPATH=/Applications/eyefiserver/eyefiserver

PYTHONPATH=/usr/bin

RCDPATH=/Applications/eyefiserver/rc.d

S99EyeFiServer.sh:

PYTHONPATH=/usr/bin

si pones tu eyefiserver en un directorio diferente, tendrás que cambiar estos parámetros.

Paso 7. Ejecute install.sh desde el terminal. Te pedirá tu clave de subida (el número largo de 30 dígitos) y el directorio en el que quieres guardar los archivos. Yo hice el mío en una carpeta llamada "Pictures" que compartí en OSX Server.

install.sh puede escupir algunos errores, PERO si tienes las cosas importantes bien, dirá que el servidor eyefi se ha iniciado y estás en el negocio.

En este punto, su servidor OSX está ejecutando un servidor eyefi. Intenta tomar algunas fotos con tu cámara. En uno o dos minutos, deberían aparecer en tu carpeta designada.

Sin embargo, usted quiere que esto se ejecute sin cabeza, sin un usuario conectado.

Paso 8. Configure un demonio global para que inicie automáticamente el servidor eyefi cada vez que arranque el ordenador. Empiece por crear un .plist. Yo llamé al mío com.eyefi.load.

Aquí está:

<?xml version="1.0" encoding="UTF-8”?

 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd”> 

<plist version="1.0”> 

<dict> 

    <key>Label</key>

    <string>com.eyefi.load</string>

    <key>ProgramArguments</key> <array> 

        <string>/Applications/eyefiserver/eyefiserver/bin/eyefiserver.py</string>           <string>/Applications/eyefiserver/eyefiserver/etc/eyefiserver.conf</string>             <string>/Applications/eyefiserver/eyefiserver/var/eyefiserver.log</string> 

     </array> 

    <key>RunAtLoad</key> 

    <true/> 

si pones tu eyefiserver en un directorio diferente, tendrás que cambiar estos parámetros.

chown este archivo a Root:wheel

Paso 9. Cargue el demonio global. He utilizado LaunchControl, pero también puede hacerlo a través de la línea de comandos.

Paso 10. Empieza a hacer fotos.

Problemas: El sello de fecha/hora está muy lejos. En mi caso, se estampan con 8 horas de retraso con respecto a la fecha en que se tomó la foto. Estoy en PST, que es GMT-8. Yo tenía mi Nikon d3100 configurado para estar en la zona horaria del Pacífico. Si lo cambio para estar en GMT, entonces la estampación de tiempo funciona. No estoy seguro de cuáles son las implicaciones de tener la cámara configurada en la zona horaria equivocada. No estoy seguro de cómo se podría arreglar esto.

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