0 votes

Besoin d'aide pour créer un démon global pour le serveur EyeFi

J'ai essayé de trouver une solution sans tête pour transférer des images d'une carte Eyefi vers mon Mac. Le logiciel du fournisseur est correct, mais il ne transfère les images que si un utilisateur est connecté à l'ordinateur. Je veux utiliser les cartes eye-fi dans un environnement de bureau et je veux le configurer de manière à ce que les images soient toujours transférées de la carte vers mon serveur mac mini fonctionnant sous Mavericks Server.

Donc, j'ai trouvé cette référence à une application Python qui fait cela et fonctionne sur les périphériques Synology. http://thijs.elenbaas.net/2013/03/installing-an-eye-fi-server-on-a-synology-nas/

Je ne connais rien à Python, si ce n'est qu'il est intégré à OSX. J'ai donc téléchargé le logiciel à partir de thijs.elenbaas.net/files/eyefiserver.tar.gz.

et je l'ai configuré sur mon mac. Il s'agit essentiellement d'un script appelé S99EyeFiServer.sh qui exécute une application Python appelée eyefiserver.py.

J'ai dû faire quelques changements au S99EyeFiServer.sh script pour le faire pointer vers les bons répertoires, principalement en fonction de l'endroit où le tout est installé sur mon mac ET du pythonpath par défaut qui sur mac est différent de celui sur synology.

En résumé, j'ai mis les fichiers du serveur eyefi dans un dossier partagé et j'ai modifié le script avec les emplacements des fichiers comme tels : PIDFILE=/Users/Shared/eyefi/eyefiserver/eyefiserver.pid DSTPATH=/Users/Shared/eyefi/eyefiserver PYTHONPATH=/usr/bin

Maintenant, si je vais dans le terminal et que je fais S99EyeFiServer.sh restart ou S99EyeFiServer.sh start. Dans le visualisateur de processus, je peux voir un nouveau processus démarrer appelé "Python" et voilà que la carte commence à transférer des images. Donc, je sais au moins que cette chose peut travailler sur le Mac.

Super.

Cependant, cela ne résout toujours pas mon problème. J'ai besoin que cette chose fonctionne toujours. Il n'a pas d'interface utilisateur et ne nécessite aucune interaction, il devrait donc pouvoir être exécuté comme un démon global, non ?

Donc, je lance launchcontrol et crée un .plist pour ce démon global

Étiquette com.eyefi.load ProgramArguments /Users/Shared/eyefi/eyefiserver/rc.d/S99EyeFiServer.sh redémarrer RunAtLoad

Je charge ceci, j'accède à job, je clique sur start. Rien, aucune erreur. L'application Python ne démarre pas. Pas d'images.

Est-ce parce que j'essaie de l'exécuter dans un dossier partagé ? J'ai donc tout copié dans usr/local/eyefiserver, reconfiguré les chemins et réessayé. Encore une fois, je peux le lancer depuis la ligne de commande et il fonctionne. Je reconfigure le démon de lancement pour le faire pointer vers le script à nouveau. Rien.

J'ai ensuite essayé de jouer avec les paramètres utilisateur:groupe dans launchcontrol, en essayant de l'exécuter en tant qu'un de mes utilisateurs, soit la configuration dans le dossier usr/local, soit dans le dossier partagé. Toujours rien. J'ai essayé une variété d'autres paramètres utilisateur:groupe. Toujours rien.

Des conseils pour que ça marche ?

1voto

yossis Points 428

Ok, j'ai réessayé sur une nouvelle installation de tout et ça marche. Voici les détails

Étape 1. Dans OSX Server, activez Python dans Sites web

Étape 2. Installer le logiciel eyefi. Le logiciel se trouve sur la carte, il suffit donc de le chercher et de lancer le programme d'installation.

Étape 3. En utilisant le logiciel eye-fi helper, configurez les préférences de la carte comme vous le souhaitez et ajoutez le réseau wifi dont vous avez besoin. Vous devez faire cela sur l'ordinateur que vous utiliserez comme serveur eyefi car il stocke le nom d'hôte local de l'ordinateur sur la carte. Vous devez également spécifier le répertoire dans lequel vous souhaitez que les photos et les vidéos soient téléchargées (je ne suis pas sûr à 100 % qu'il soit nécessaire de le faire). J'ai désactivé les téléchargements dans le nuage et l'accès direct, mais j'ai activé la mémoire illimitée sur la carte pour que les images s'effacent automatiquement de la carte.

Ensuite, désactivez l'application eyefi helper et demandez-lui de ne pas se charger au démarrage.

Étape 4. Trouvez la clé de téléchargement de votre carte eyefi en allant sur ~/Libary/Eye-Fi/Settings.xml. Ouvrez-le avec Xcode si vous le pouvez, c'est beaucoup plus facile pour trouver les choses. Vous recherchez quelque chose comme ceci :

longue chaîne d'environ 30 lettres et chiffres

Vous pouvez également trouver l'adresse MAC de la carte dans ce fichier, ce qui est utile, surtout si vous utilisez les adresses MAC pour restreindre l'accès à votre (vos) réseau(x) wifi.

Étape 5. Ensuite, vous devez télécharger le logiciel eyefi server à partir de : http://thijs.elenbaas.net/files/eyefiserver.tar.gz

Je l'ai mis en application.

Étape 6. Ensuite, vous devez modifier install.sh avant de l'exécuter.

Install.sh :

SRCPATH=/Applications/eyefiserver/eyefiserver

DSTPATH=/Applications/eyefiserver/eyefiserver

PYTHONPATH=/usr/bin

RCDPATH=/Applications/eyefiserver/rc.d

S99EyeFiServer.sh :

PYTHONPATH=/usr/bin

si vous placez votre eyefiserver dans un autre répertoire, vous devrez modifier ces paramètres.

Étape 7. Exécutez install.sh depuis le terminal. Il vous demandera votre clé Upload (le long numéro à 30 chiffres) et le répertoire dans lequel vous voulez sauvegarder les fichiers. J'ai créé le mien dans un dossier appelé "Pictures" que j'ai partagé dans OSX Server.

install.sh peut produire quelques erreurs, MAIS si vous avez fait les choses importantes correctement, il dira que le serveur eyefi a démarré et que vous êtes en affaires.

A ce stade, votre serveur OSX fait tourner un serveur eyefi. Essayez de prendre quelques photos avec votre appareil photo. Dans une minute ou deux, elles devraient apparaître dans le dossier désigné.

Cependant, vous voulez que cela fonctionne sans tête, sans utilisateur connecté.

Étape 8. Configurez un démon global pour démarrer automatiquement le serveur eyefi à chaque fois que vous démarrez l'ordinateur. Commencez par créer un fichier .plist. J'ai appelé la mienne com.eyefi.load.

Le voici :

<?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 vous placez votre eyefiserver dans un autre répertoire, vous devrez modifier ces paramètres.

chown ce fichier à Root:wheel

Étape 9. Chargez le démon global. J'ai utilisé LaunchControl, mais vous pouvez aussi le faire en ligne de commande.

Étape 10. Commencez à prendre des photos !

Enjeux : L'horodatage n'est pas du tout correct. Pour moi, elle est décalée de 8 heures par rapport à la date à laquelle la photo a été prise. Je suis en PST, c'est-à-dire en GMT-8. J'ai réglé mon Nikon d3100 pour qu'il soit dans le fuseau horaire du Pacifique. Si je le modifie pour qu'il soit dans le fuseau horaire GMT, l'horodatage fonctionne. Je ne sais pas quelles sont les implications d'avoir l'appareil photo réglé sur le mauvais fuseau horaire. Je ne sais pas comment résoudre ce problème.

1voto

LCC Points 672

Ne faites pas pointer launchd vers le script du init.d mais vers le programme que le script exécute. Il est important que le programme ne se " démonise " pas (se transforme en processus d'arrière-plan). C'est le travail de launchd.

Mettez ceci dans votre ProgramArguments et tout devrait bien se passer :

<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>

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X