Hai bisogno di aiuto per creare un demone globale per EyeFi Server

0

Ho cercato di trovare una soluzione headless per trasferire le immagini da una scheda eyefi al mio mac. Il software del fornitore è accettabile, ma trasferirà le immagini solo se un utente ha effettuato l'accesso al computer. Voglio utilizzare le schede eye-fi in un ambiente di ufficio e voglio configurarlo in modo che le immagini vengano sempre trasferite dalla scheda al mio mac mini server su cui è in esecuzione Mavericks Server.

Quindi, ho trovato questo riferimento a un'applicazione python che esegue questa operazione e funziona su dispositivi di synology. link

Non so nulla di Python tranne per il fatto che OSX lo ha integrato. Quindi ho scaricato il software da thijs.elenbaas.net/files/eyefiserver.tar.gz

e configurato sul mio mac. Sembra essere fondamentalmente uno script chiamato S99EyeFiServer.sh che esegue un'applicazione python chiamata eyefiserver.py

Ho dovuto apportare alcune modifiche allo script S99EyeFiServer.sh per indirizzarlo alle directory corrette, principalmente in base a dove è installato l'intero elemento sul mio mac E al pythonpath predefinito che su mac è diverso rispetto alla sinologia.

In conclusione, inserisco i file del server eyefi in una cartella condivisa e ho modificato lo script con i percorsi dei file come tali: PidFile = / Users / Shared / EyeFi / eyefiserver / eyefiserver.pid DSTPATH = / Users / Shared / EyeFi / eyefiserver PYTHONPATH = / usr / bin

Ora, se vado al terminale e faccio riavvio S99EyeFiServer.sh o avvio S99EyeFiServer.sh. Nel processo di visualizzazione, posso vedere un nuovo processo che inizia chiamato "Python" e voilà la scheda inizierà a trasferire le immagini. Quindi, almeno so che questa cosa può lavorare sul mac.

Grande.

Tuttavia, questo ancora non risolve il mio problema. Ho bisogno che questa cosa funzioni sempre. Non ha alcuna GUI o richiede alcuna interazione, quindi dovresti essere in grado di eseguirlo come demone globale, giusto?

Quindi accendo launchcontrol e creo un .plist per questo demone globale

    Etichetta     com.eyefi.load     ProgramArguments              /Users/Shared/eyefi/eyefiserver/rc.d/S99EyeFiServer.sh         ricomincia          RunAtLoad     

Carico questo, goto job, click start. Niente. nessun errore l'app python non si avvia. niente immagini.

È perché sto cercando di eseguirlo in una cartella condivisa? Così ho copiato tutto in usr / local / eyefiserver, riconfigurare i percorsi e riprovare. Ancora una volta, posso avviarlo dalla riga di comando e funzionerà. Riconfiguro il daemon di avvio per rimetterlo di nuovo in posizione. Niente.

Ho quindi provato a giocare con user: impostazioni di gruppo in launchcontrol, cercando di eseguirlo come uno dei miei utenti, sia l'installazione nella cartella usr / local o nella cartella condivisa. Ancora niente. provato una varietà di altri utenti: le impostazioni di gruppo. ancora niente.

Qualche consiglio su come fare questo lavoro?

    
posta ajm_from_sea 22.01.2014 - 06:48
fonte

2 risposte

1

Non puntare launchd allo script init.d ma al programma che lo script esegue. È importante che il programma non 'si demoni' (si fa esso stesso un processo in background). Questo è il lavoro di launchd.

Metti questo nella tua chiave ProgramArguments e dovresti stare bene:

<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>
    
risposta data 22.01.2014 - 11:22
fonte
1

Ok, ho provato di nuovo su una nuova installazione di tutto e farlo funzionare. Ecco i dettagli

Passaggio 1. In OSX Server, attiva Python nei siti Web

Passaggio 2. Installare il software eyefi. Mettono il software sulla scheda, quindi devi solo cercarlo lì ed eseguire il programma di installazione.

Passaggio 3. Usando il software eye-fi helper, imposta le preferenze per la scheda a tuo piacimento e aggiungi la rete wifi di cui hai bisogno. È necessario eseguire questa operazione sul computer che si utilizzerà come server eyefi perché memorizza il nome host locale del computer sulla scheda. Si specifica inoltre la directory in cui si desidera caricare le foto e i video (non sicuro al 100% che sia necessario farlo). Ho disattivato i caricamenti sul cloud e l'accesso diretto, ma ho attivato la memoria infinita sulla scheda in modo che le immagini vengano automaticamente eliminate dalla scheda.

Quindi, spegni l'app eyefi helper e digli di non caricare con l'avvio.

Passaggio 4. Trova la chiave di caricamento per la tua scheda eyefi andando a ~ / Libary / Eye-Fi / Settings.xml. Aprilo con Xcode se puoi, molto più facile da trovare. Stai cercando qualcosa del genere:

lunga stringa di circa 30 lettere e numeri

Puoi anche trovare l'indirizzo MAC della scheda in quel file che è bello avere, specialmente se usi gli indirizzi MAC per limitare l'accesso alle tue reti wifi.

Passaggio 5. Quindi, è necessario scaricare il software del server eyefi da: link

L'ho messo in Applicazioni.

Passaggio 6. Quindi, prima di eseguirlo, è necessario modificare install.sh.

Install.sh:

SRCPATH=/Applications/eyefiserver/eyefiserver

DSTPATH=/Applications/eyefiserver/eyefiserver

PYTHONPATH=/usr/bin

RCDPATH=/Applications/eyefiserver/rc.d

S99EyeFiServer.sh:

PYTHONPATH=/usr/bin

se metti il tuo eyefiserver in una directory diversa, dovrai modificare questi parametri.

Passaggio 7. Eseguire install.sh dal terminale. Ti chiederà il tuo tasto Upload (il numero di 30 cifre lungo) e la directory in cui desideri salvare i file. Ho creato una cartella chiamata "Immagini" che ho condiviso su OSX Server.

install.sh potrebbe sputare alcuni errori, MA se hai le cose giuste, dirà che il server eyefi è partito e sei in affari.

A questo punto, il server OSX esegue un server eyefi. Prova a scattare qualche foto con la tua fotocamera. In un minuto o due, dovrebbero apparire nella cartella designata.

Tuttavia, si desidera che questo sia in esecuzione senza headless, senza un utente connesso.

Passaggio 8. Configurare un daemon globale per l'avvio automatico del server Eyefi ogni volta che si avvia il computer. Si inizia facendo un .plist. Ho chiamato il mio com.eyefi.load.

Ecco qui:

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

se metti il tuo eyefiserver in una directory diversa, dovrai modificare questi parametri.

Chown questo file su root: wheel

Passaggio 9. Caricare il daemon globale. Ho usato LaunchControl, ma puoi farlo anche tramite la riga di comando.

Passaggio 10. Inizia a scattare foto!

Problemi: la stampa di data / ora non è valida. Per me, sono timbrati 8 ore indietro quando è stata scattata la foto. Sono in PST, che è GMT-8. Ho avuto il mio Nikon d3100 impostato per essere nel fuso orario del Pacifico. Se lo cambio per essere in GMT, quindi il timestamp funziona. Non sono sicuro di quali siano le implicazioni di avere la fotocamera impostata nel fuso orario sbagliato. Non sono sicuro di come potrebbe essere risolto.

    
risposta data 03.08.2014 - 16:55
fonte

Leggi altre domande sui tag