Bonjour à tous,
Juste pour vous tenir informé des mes avancés sur le point qui m'occupe.
Rappel des faits :
- pouvoir faire une synchronisation avec une seedbox pour le rapatriement automatique des fichiers présents sur la seedbox
- "analyser" les fichiers pour déterminer si film/series/musique/autre
- déplacer les fichiers dans les bons répertoires (films, séries, etc...)
- renommer les fichiers avec des noms plus lisible
- supprimer les fichiers présents sur la seedbox après un certain temps (paramétrable) pour éviter des hit&run
Au départ, je pensais passer par un soft ftp "intelligent" mais aucun package dispo actuellement.
Je suis donc partis de ca : http://www.legeektechno.fr/serveurs/rec ... edbox.html
C'est à dire, utiliser la commande RSync pour synchroniser la seedbox et le syno.
Le package installé sur la seedbox, ca fonctionne au poil mais :
- ca impose de "déporter" une partie de la gestion coté seedbox et je veux tout conserver coté nas.
- impossible de savoir quand est passé le script coté NAS pour effectuer le reste du boulot (déplacement, renommage, suppression).
- j'ai du créer une clé de mon syno vers la seedbox. Du coup, toujours un risque que si quelqu'un "hack" ma seedbox. Il a alors le chemin libre pour se connecter à mon syno.
N'étant pas un "pro" des scripts SH, j'ai donc décidé de faire un petit prog java qui ferait la chose suivante :
- récupération des nouveaux fichiers coté seedbox avec script sh rsync vers le syno
- check coté syno si présence de fichiers supérieurs à 2 jours (pour éviter le hit&run). Si oui, alors supression du fichier coté syno. Puis lancement du script sh rsync avec l'option -delete-before vers la seedbox. Ainsi, tous les fichiers que j'ai effacé coté syno seront également effacés coté seedbox.
- analyse du nom des nouveaux fichiers pour déterminer le type (film, series...)
- copie de ces fichiers dans les bons répertoire avec renommage des fichiers
J'ai réussis à faire celà sans trop de soucis mais ensuite... C'est le drame.
- Si je lance le script via une fenetre ssh : resultat OK-KO mais ne fonctionne qu'une fois ou tant que je kill pas la fenêtre ssh si mon code java fonctionne en tache planifiée (via une java.util.TimerTask)
- Si je lance le script via les taches planifiées du syno : Resultat KO. Il ne trouve pas la commande java. Je pense que c'est lié au fait que le planificateur de tache du syno ne lance pas les commandes avec tout l'environnement linux de l'utilisateur selectionné. Du coup, il n'a pas les bonnes variables d'environnement java (JAVA_HOME, etc...)
- Si je lance le script via une fenetre ssh avec l'option nohup : Resultat KO. Ca fonctionne tant que je ferme pas la fenetre si j'utilise une Task Java qui se relance toutes les X minutes. Meme avec l'option nohup, si je kill ma fenetre, il me kill tous mes process dont ma tache nohup. Soucis qui semble se confirmer dans des échanges sur le forum officiel syno : http://forum.synology.com/enu/viewtopic ... 90&t=32983
- Si je lance le script via le package "Cronjob Editor". Resultat KO. Il semble me lancer le script avec l'utilisateur root et ce même si je spécifie un autre user. Or, ma seedbox n'accepte qu'une clé publique venant du user "batch" que j'ai créé sur mon Syno. Du coup, j'ai une "Validation Key failed" coté seedbox qui refuse la connexion ssh pour le rsync avec le user "rrot".
Il me reste plusieurs tests à faire :
- autoriser le compte "root" du syno à se connecter en ssh à ma seedbox en lui générant une clé autorisée sur la seedbox. Ca me plait moyen, car je veux que ce soit mon utilisateur "batch" et non "root qui exécute la commande. Mais dans ce cas, je devrais pouvoir utiliser le cron du syno
- installer Ipkg pour pouvoir installer la commande screen et tenter de lancer le script sh au démarrage du syno via la commande screen pour ne pas qu'il kill le process. Mais dans ce cas, il faut que je traite le fait de relancer le script à interval régulier via une Task java. Je préférerais utiliser la crontab du syno.
- installer le cron linux par défaut et voir si le bon user est utilisé pour lancer ma commande.
De plus je rencontre le problème suivant :
- Pour pouvoir lancer le script rsync coté seedbox, j'ai du créer une clé pour la seedbox sur le syno. Ca fonctionne sans soucis hormis un petit hic : maintenant, je ne peux plus me connecter en ssh sur mon syno en direct. Il me dit que je n'ai pas de clé valide. Actuellement, pour me connecter au syno, je dois d'abord me connecter à ma seedbox en ssh. Puis de ma seedbox, me connecter en ssh sur mon syno. Super chiant d'autant que je peux pas me connecter ensuite en root (non autorisé). Il faudrait d'abord que je crée une clé ssh pour le compte root à destination de la seedbox mais encore faudrait il que j'arrive d'abord à me connecter en root sur mon syno (tout le monde suite encore ?).
Bref, je ne peux plus, actuellement, me connecter en SSH sur mon syno qu'en passant par un SSH via ma seedbox. Un poil ennuyeux tout de même.
Bref, face à tout cela, j'ai décidé :
- de faire une réinstall complète de mon xpenology pour
* résoudre ce soucis de connexion SSH à mon syno
* virer les pkg foireux que j'ai pu installer pour mes différents tests.
- installer Ipkg pour utiliser la commande "screen" ou un cron valide
A suivre...