• Serveurs
  • [Discussion] Exécuter des commandes avec les événements rTorrent

Merci pour ce tuto.

J'ai une petite question, est-ce que le caractère "$" est obligatoire lorsque qu'on veut utiliser un attribut ? J'ai vu certains exemples sans ce caractère sur le wiki d'arch, comme celui-là :
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="
ou encore :

http://mondedie.fr/d/5733/155

Les deux syntaxes sont correctes ?
execute=command,$d.attrib=
execute=command,d.attrib

Précision importante: toutes les commandes sont exécutés avec l'utilisateur rtorrent. Donc vous ne pourrez pas exécuter des commandes qui requières les droits root.
On peut contourner le problème en ajoutant une directive dans sudoers :
RTORRENT_USER ALL = (root) NOPASSWD: /chemin/vers/executable
PLus d'info ici
Hardware wrote:est-ce que le caractère "$" est obligatoire lorsque qu'on veut utiliser un attribut ? J'ai vu certains exemples sans ce caractère sur le wiki d'arch, comme celui-là :
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="
ou encore :

http://mondedie.fr/d/5733/155

Les deux syntaxes sont correctes ?
execute=command,$d.attrib=
execute=command,d.attrib
Alors je me suis posé la même question et après test oui, c'est obligatoire.
ex :
execute=ls,-al,$d.get_directory=
exécute cette commande
ls -al /home/user/torrents/
Alors que si on suit cette syntaxe
execute=ls,-al,d.get_directory
exécute cette commande
ls -al d.get_directory
Hardware wrote:
Précision importante: toutes les commandes sont exécutés avec l'utilisateur rtorrent. Donc vous ne pourrez pas exécuter des commandes qui requières les droits root.
On peut contourner le problème en ajoutant une directive dans sudoers :
RTORRENT_USER ALL = (root) NOPASSWD: /chemin/vers/executable
PLus d'info ici
Oui ça implique d'avoir installé sudo. Ce qui n'est pas le cas dans le tuto rutorrent du site.
2 mois plus tard
Coucou
J'aimerais faire un événement pour pouvoir déplacer des répertoires du /home/user/torrents vers /var/www/owncloud/data/user/files mais rien de beau sous le sapin qui marche correctement.
En gros dans mon fichier .rtorrent.rc j'ai mis ça :
schedule = watch_1,15,15,"load_start=~/tmp/torrents/*.torrent,d.set_custom1=~/Finished/"
system.method.set_key = event.download.finished,move_complete,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=/home/adrianboker/torrents,$d.get_custom1=/var/www/owncloud/data/adrianboker/files" 
Je tire la ligne de commande de ce site :

http://wiki.rtorrent.org/Recipe/Move%20downloaded%20data%20to%20another%20directory%20and%20continue%20seeding

Merci d'avance de votre aide
16 jours plus tard
Hello,

Merci beaucoup pour cette doc.

Je rencontre actuellement un soucis avec rtorrent.rc. J'ai l'impression qu'il n'est pas pris en compte.
Ma conf est la suivante : j'ai une dédibox avec Debian + rtorrent + rutorrent (sous nginx ==> j'ai suivi le tuto du forum).

J'ai essayé d'exécuter une commande pour déplacer les fichiers téléchargés dans un autre dossier à la fin du téléchargement.

Voyant qu'il ne se passait rien j'ai essayé de commenter des lignes déjà présentes dans le fichier rtorrent.rc (les lignes qui permettent de créer le dossier watch où on dépose ses torrents).

Après avoir sauvegardé le fichier de conf, et redémarré le nginx et rtorrent, je me suis connecté en ftp pour déposer un torrent dans le dossier watch et le torrent a tout de même été lancé.

Du coup ma question est la suivante :
Y-a-t-il quelque chose de particulier à faire pour recharger la configuration au redémarrage de rutorrent ?

PS : J'utilise le service <username>-rtorrent pour redémarrer rtorrent.
Merci d'avance de votre aide et bonne journée
Bonsoir,

à ma connaissance non. En revanche, parfois il arrive que le service fonctionne mal. Dans ce cas, il faudra arrêter screen.
De rien et bonne journée
Bonsoir,

Merci de ta réponse, je ne savais pas qu'on pouvait désactiver screen uniquement.
Tu fais comment pour le relancer après ?

Je sais que la question peut paraître bête mais je débute, et je trouve que rutorrent n'est pas super bien documenté.

J'avais trouvé une solution, qui n'est pas optimale mais qui avait le mérite de fonctionner (rebooter le serveur). Mais c'est pas viable sur le long terme de rebooter le serveur à chaque fois que je modifie ma configuration.

Bonne soirée, et merci encore.
Bonsoir,

de rien, je le relance via le service rtorrent (le démarrer).

Non, pas vraiment, comme il faut un certain savoir (ou bagage). Dans une certaine mesure, oui je trouve également.
Je suis plutôt d'accord : ni optimale, ni viable. D'autant qu'il y a souvent une autre (voir même meilleur) solution.

Bonne soirée
Bon, ben j'ai testé mais ça ne fonctionne toujours pas.

Voici ce que j'ai fait exactement :

1) Modification du rtorrent.rc (mise en commentaire des lignes permettant d'activer le dossier "watch")

2) Arrêt de rutorrent avec la commande :
sudo service <username>-rtorrent stop
3) Arrête de screen avec la commande :
sudo screen -wipe
4) Relance de rutorrent avec la commande :
sudo service <username>-rtorrent start
Mais après la relance, le dossier watch fonctionne toujours (lorsque j'y dépose un fichier .torrent, celui est bien chargé dans rutorrent)
Peut-être n'ai-je pas utilisé la bonne commande pour stopper screen ?

Je ne voit pas ce qui bloque...
En fait, c'est pas cette commande que j'avais en tête. Plutôt une comme celle-ci :
killall screen
J'aurais du complété. Par arrêter, j'entendais également terminer (voir tuer) le(s) processus.
AH! Ca fonctionne enfin.

Merci beaucoup pour toutes ces réponses.
Ca m'enlève une épine du pied.

Du coup pour ceux qui auraient le même problème, voici la démarche complète à suivre pour forcer le rechargement du fichier de configuration de rtorrent :

Stopper rtorrent :
sudo service <username>-rtorrent stop
Arrêt de screen :
sudo killall screen
Démarrage de rtorrent :
sudo service <username>-rtorrent start
Bonne journée, et merci encore.
Pour kill uniquement les processus par utilisateur. Je pars du principe que l'on n'est root (rajoutez sudo devant si il le faut).
killall --user <username> rtorrent
killall --user <username> screen
service <username>-rtorrent start
2 mois plus tard
Bonjour,

Petite question j'aurais aimé grâce à cette commande magique automatisé un envoi via ftp.

Par exemple un fichier viens de ce finir et via l'évènement un envoi sur un ftp du dit fichier ce lance.

Je n’ai pas trop d'expérience en scripte donc pas trop par quelle bout commencer.

Merci d'avance.
tu peux envoyer le fichier avec la commande lftp.
Ensuite tu récupérer le nom du fichier que tu mets en paramètre lors de l'exécution du script

On peut imaginer ça par exemple
system.method.set_key = event.download.finished,mail,"execute=/path/upload_file.sh,$d.get_name="
Une fois qu'un fichier a fini de télécharger, le script upload_file est exécuté avec comme paramètre le nom du torrent.
./upload_file film-de-vacance
Ensuite via la variable $1 tu récupère le nom du torrent et tu fais une routine pour upload le fichier avec les infos
Génial et merci de la vitesse de ta réponse.
Pour le ftp j'ai utilisé yafc et ça marche au poil.
Le coup du $1 je ne connaissais pas et le principe et assez fort.
4 mois plus tard
Yoo !!

J'aimerai utiliser les events pour pouvoir mettre en place un dossier 'incomplete' avant qu'il se retrouve dans le dossier torrents. Je pense d'ailleurs que cette fonction de dossier tampon devrait être rajouter aux différents tutoriel par défaut. Le problème du téléchargement direct dans le dossier final de l'utilisateur (/torrents) pourrait provoquer des conflits avec certaines applications d'automatisation notamment avec Sickrage, Sickbeard.

directory = ~/incomplete
et
system.method.set_key = event.download.finished,move_complete,"execute=mv,-u,$d.get_base_path=,~/torrents/;d.set_directory=$~/torrents/"
Mon problème c'est que ça déplace bien, mais je suis pas sur que ça seed derrière. Sur la WEB UI j'ai toujours le répertoire avec le path "~/incomplete"

Si quelqu'un veut bien m'aider, parce que je vois pas trop ce qu'il faut que je fasse
4 mois plus tard
Bonjour,

Peut on exclure des fichiers qui se télécharge en fonction de leur extension (.nfo, .jpg ...) ??

PS: le fichier sh avec le script à éxectuter doit être placer où par rapport à rtorrent.rc ??

Faut-il le / avec le nom du script :
system.method.set_key = event.download.finished,mail,"execute=script_send.sh,$d.get_name="
??
Plop,

Je vais répondre un peux a coter, mais tu peux exécuter cette commande en te plaçant dans le dossier de réception de tes torrents.
cd /home/<user>/torrents/ && find -type f -iname '*.nfo' -exec rm "{}" \;


Dans cette exemple, ce serais pour delete tout les .nfo. Tu peux modif l'extension pour rm autre chose ...

Ou même combiner plusieurs extension :
cd /home/<user>/torrents/ && find -type f -iname '*.nfo' -exec rm "{}" \; && find -type f -iname '*.jpg' -exec rm "{}" \;


Au pire tu te fait un .sh et tu l’exécute avec un tache cron.
z3phyr wrote:Plop,

Je vais répondre un peux a coter, mais tu peux exécuter cette commande en te plaçant dans le dossier de réception de tes torrents.
cd /home/<user>/torrents/ && find -type f -iname '*.nfo' -exec rm "{}" \;


Dans cette exemple, ce serais pour delete tout les .nfo. Tu peux modif l'extension pour rm autre chose ...

Ou même combiner plusieurs extension :
cd /home/<user>/torrents/ && find -type f -iname '*.nfo' -exec rm "{}" \; && find -type f -iname '*.jpg' -exec rm "{}" \;


Au pire tu te fait un .sh et tu l’exécute avec un tache cron.
Merci de ta réponse,

je préférerais trouver une solution sans les supprimer

Mais bon au pire j'utiliserais cette méthode, merci
6 jours plus tard
Auckland wrote:Bonjour,

PS: le fichier sh avec le script à éxectuter doit être placer où par rapport à rtorrent.rc ??

Faut-il le / avec le nom du script :
system.method.set_key = event.download.finished,mail,"execute=script_send.sh,$d.get_name="
??
Up svp