Necesita ayuda para crear Global Daemon para el servidor de EyeFi

0

He estado tratando de encontrar una solución sin cabeza para transferir imágenes de una tarjeta eyefi a mi mac. El software del proveedor es decente, pero solo transferirá imágenes si hay un usuario conectado a la computadora. Quiero usar las tarjetas de eye-fi en un entorno de oficina y quiero configurarlo para que las imágenes siempre se transfieran desde la tarjeta a mi mini servidor Mac que ejecuta el servidor Mavericks.

Encontré esta referencia a una aplicación de python que hace esto y se ejecuta en dispositivos de sinología. enlace

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

y lo configuré en mi mac. Parece ser básicamente un script llamado S99EyeFiServer.sh que ejecuta una aplicación de python llamada eyefiserver.py

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

La línea de fondo, es que coloco los archivos del servidor eyefi en una carpeta compartida y modifiqué el script con las ubicaciones de los archivos como tales: PIDFILE = / Users / Shared / eyefi / eyefiserver / eyefiserver.pid DSTPATH = / Users / Shared / eyefi / eyefiserver PYTHONPATH = / usr / bin

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

Genial.

Sin embargo, esto todavía no resuelve mi problema. Necesito esta cosa para correr siempre. No tiene ninguna interfaz gráfica de usuario ni requiere ninguna interacción, por lo que deberías poder ejecutarlo como un demonio global, ¿no?

Entonces, enciendo launchcontrol y hago una lista para este daemon global

    Etiqueta     com.eyefi.load     ProgramaArgumentos              /Users/Shared/eyefi/eyefiserver/rc.d/S99EyeFiServer.sh         reiniciar          RunAtLoad     

Cargo esto, goto job, click start. nada. sin errores. La aplicación de Python no se inicia. Sin imágenes.

¿Es porque estoy intentando ejecutarlo en una carpeta compartida? Así que copié todo en usr / local / eyefiserver, reconfiguré los caminos e intenté nuevamente. Nuevamente, puedo iniciarlo desde la línea de comandos y funcionará. Reconfiguré el demonio de inicio para apuntarlo nuevamente al script. Nada.

Luego intenté jugar con la configuración de usuario: grupo en launchcontrol, intentando ejecutarlo como uno de mis usuarios, ya sea la configuración en la carpeta usr / local o en la carpeta compartida. Todavía nada. intentado una variedad de otros usuarios: configuración de grupo. Todavía nada.

¿Algún consejo para hacer que esto funcione?

    
pregunta ajm_from_sea 22.01.2014 - 06:48

2 respuestas

1

No apunte launchd a la secuencia de comandos init.d sino al programa que ejecuta la secuencia de comandos. Es importante que el programa no se "desemaneice" (se convierta en un proceso en segundo plano) en sí mismo. Este es el trabajo de Launchd.

Ponga esto en su clave 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>
    
respondido por el LCC 22.01.2014 - 11:22
1

Ok, lo he intentado nuevamente en una instalación nueva de todo y lo tengo funcionando. Aquí están los detalles

Paso 1. En el servidor OSX, active Python en los sitios web

Paso 2. Instale el software eyefi. Pusieron el software en la tarjeta, así que solo tienes que buscarlo allí y ejecutar el instalador.

Paso 3. Usando el software de ayuda de eye-fi, configure las preferencias para la tarjeta como desee y agregue la red wifi que necesita. Debe hacer esto en la computadora que usará como servidor eyefi porque almacena el nombre de host local de la computadora en la tarjeta. También especifica el directorio aquí donde desea que se carguen las fotos y los videos (no está 100% seguro de que necesita hacer esto). Desactivé las cargas en la nube y el acceso directo, pero activé la memoria interminable en la tarjeta para que las imágenes se borren automáticamente de la tarjeta.

Luego, apaga la aplicación de ayuda de eyefi y dile que no se cargue con el inicio.

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

cadena larga de aproximadamente 30 letras y números

También puede encontrar la dirección MAC de la tarjeta en ese archivo que es bueno tener, especialmente si usa direcciones MAC para restringir el acceso a su (s) red (es) wifi (s).

Paso 5. Luego, debes descargar el software del servidor eyefi desde: enlace

Lo puse en Aplicaciones.

Paso 6. Luego, debes 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 coloca su eyefiserver en un directorio diferente, deberá cambiar estos parámetros.

Paso 7. Ejecuta install.sh desde la terminal. Le pedirá su clave de Subida (el número largo de 30 dígitos) y el directorio en el que desea guardar los archivos. Hice la mía una carpeta llamada "Imágenes" que compartí en el servidor OSX.

install.sh puede escupir algunos errores, PERO si tiene en cuenta lo importante, dirá que el servidor eyefi se ha iniciado y usted está en el negocio.

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

Sin embargo, desea que esto se ejecute sin cabeza, sin un usuario registrado.

Paso 8. Configura un demonio global para iniciar automáticamente el servidor de eyefi cada vez que inicies la computadora. Empiezas haciendo una lista. Llamé a la mía 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 coloca su eyefiserver en un directorio diferente, deberá cambiar estos parámetros.

Chown este archivo para root: wheel

Paso 9. Carga el demonio global. Usé LaunchControl, pero también puedes hacerlo a través de la línea de comandos.

Paso 10. ¡Comienza a tomar fotos!

Problemas: la fecha / hora de sellado está muy lejos. Para mí, están selladas 8 horas después de la toma de la fotografía. Estoy en PST, que es GMT-8. Tenía mi Nikon D3100 configurada para estar en la zona horaria del Pacífico. Si lo cambio para que esté en GMT, entonces el sellado de tiempo funciona. No estoy seguro de cuáles son las implicaciones de tener la cámara configurada en la zona horaria incorrecta. No estoy seguro de cómo podría solucionarse esto.

    
respondido por el ajm_from_sea 03.08.2014 - 16:55

Lea otras preguntas en las etiquetas