Forum Programmation.shell Commander Rtorrent par un script

Posté par (page perso) .
Tags : aucun
1
1
mar.
2011

Bonjour,

Je débute avec bash. Jusqu'à maintenant je passais des commandes dans la console, mais je n'avais pas fait de script. Il faut bien se lancer, alors voilà mon objectif.

Sur un petit server j'ai des fonction classique de server web, email... et Rtorrent. Je cherche à optimiser la connexion. Le serveur est peu demandé, donc la plupart du temps je peux donner toute la bande passante en upload. Mais quand il y a une demande (requête sur le serveur web par exemple), je n'ai plus de bande passante disponible.

Je fais donc un script qui vérifie régulièrement si il y a une demande sur le serveur web et qui dans ce cas ralenti rtorrent, puis lui redonne la bande passante 5 minutes plus tard si il n'y a plus d'appel sur le serveur web.

La partie surveillance du serveur web et les choix qui vont avec... c'est bon.

par contre je ne trouve pas d'informations pour piloter rtorrent a partir d'un script. Il tourne en tache de fond sur screen. si je fait revenir screen en premier plan, je peux manipuler rtorrent par des raccourcis, mais comment envoyer ces raccourcis dans un script? En plus les raccourcis pour monter et baisser le débits se fond par tranche de 5 ou 10 Ko. Or j'aimerai pouvoir fixer directement une valeur. une commande du genre: Upload_Limit=4ko/s ou Upload_Limit=off (pas de limite).

Quelqu'un peut il me donner des axes de recherche? des sites avec la bonne info, le bon tuto?

Merci

  • # j'ai fait le bourrin, j'ai demandé à "MAN"

    Posté par . Évalué à 2.

    man rtorrent me dit

    schedule = id,start,interval,command Call command every interval seconds, starting from start. An interval of zero calls the task once, while a start of zero calls it immediately. Currently command is forwarded to the option handler. start and interval may optionally use a time format, dd:hh:mm:ss. F.ex to start a task every day at 18:00, use 18:00:00,24:00:00.

    alors c'est une option à donner au demarrage de rtorrent qui permet de lancer la "command" à intervalle regulier

    du coup tu dois pouvoir scripter en une ligne pour faire la commande.

    sinon une solution (moche mais en attendant de pouboir piloter rtorrent via un port ou un socket, tu peux le relancer avec les bonnes options quand tu detectes de l'activité

    si le logiciel est bien fait, il y a une option RELOAD plutot que RESTART qui permettrait alors de relire le fichier de configuration sans arreter le service et donc de modifier le comportement du logiciel.

    • [^] # Re: j'ai fait le bourrin, j'ai demandé à "MAN"

      Posté par (page perso) . Évalué à 2.

      Mouais à première vue rtorrent n'est pas trop fait pour être piloté via bash. Il y a une interface en ncurse et on peut le piloter via xmlrpc (pour faire des clients web).

      J'ai tout de même l'impression que son problème pourra être beaucoup plus rapidement résolu avec transmission. Il suffit de lancer transmission-daemon puis de le piloter via transmission-remote

    • [^] # Re: j'ai fait le bourrin, j'ai demandé à "MAN"

      Posté par (page perso) . Évalué à 1.

      Merci pour ce retour.

      Pour ce qui est d'une option reload, man rtorrent n'en parle pas, pas plus qu'un restart d'ailleur. En fait ce programme en console est fait pour tourner en mode console et mobilise une console en permanence. On le pilote ensuite avec des combinaisons de touches. Il ne troune pas en daemon. Pour le faire tourner en arrière plan, j'utilise (comme tout le monde) screen. ceci fait que quand on cherche a rappeler le programme pour lancer une commande on a le droit à une belle erreur puisque le programme tourne déjà.

      rtorrent: Error in option file: ~/.rtorrent.rc:117: Could not prepare socket for listening: Address already in use
      

      Je regarde le schedule mais je suis sceptique, car. Ca marche comme un cron... ca déclanche a interval régulier. Mais mon problème n'est pas l'appel à un script mais l'envoi de l'instruction du script vers rtorrent.

      Une solution pas très propre, (mais je ne vois rien d'autre pour le moment) serait de simuler la frappe des touches... Est-ce faisable?

      • [^] # Re: j'ai fait le bourrin, j'ai demandé à "MAN"

        Posté par . Évalué à 2.

        rtorrent: Error in option file: ~/.rtorrent.rc:117: Could not prepare socket for listening: Address already in use

        ca ne serait pas deja une piste ? en gros, il y a un socket ouvert sur la machine, utilisé par le logiciel pour communiquer avec ... lui-meme je penses puisque le reste se passe par des ports.

        du coup le logiciel est peut-etre decoupé en deux partie, un daemon (meme si tu ne le vois pas) et une interface en ncurse qui dialogue avec le daemon via le socket.

        y a plus qu'a decoder ce qui se passe sur le socket pour pouvoir interagir avec le programme via ce moyen.

        sinon comme dit plus haut, apparemment il y aurait une interface xmlrpc pour passer des commandes

        • [^] # Re: j'ai fait le bourrin, j'ai demandé à "MAN"

          Posté par (page perso) . Évalué à 1.

          A lire les réponses, je vois que je ne suis pas au niveau...
          je vais regarder un peu cette histoire de xmlrpc... mais bon, comme le nom ne me dis rien, je crains d'être un peu perdu.
          Pour tout dire comme j'utilise rutorrent qui est une interface web en php-javascript j'avais jeté un oeil dans le code pour voir si je trouvais la commande qui va bien. déclencher la commande via apache ne me dérange pas à priori, puisque apache tourne en permanence... Mais je me suis perdu dans le code...

          C'est dure les débuts.

          • [^] # Re: j'ai fait le bourrin, j'ai demandé à "MAN"

            Posté par . Évalué à 4.

            Sinon il y a la QoS, c’est fait pour et ça marche bien. Je suis en train de rédiger le tutoriel Une introduction au contrôle du trafic réseau avec Linux, qui se trouve sur le Wiki. Pour l’avoir essayé avec torrent/ssh, torrent/streaming, torrent/http, je peux garantir que c’est efficace.

            Ce soir si j’y pense, j’y mettrai mon script actuel. Ça peut aider.

            • [^] # Re: j'ai fait le bourrin, j'ai demandé à "MAN"

              Posté par . Évalué à 3.

              Chose promise, chose dûe. Le script devrait fonctionner clef en main (en root) pourvu que les quatres variables du début soient correctement renseignées. Si le port 8000 fait partie des ports de Rtorrent il faudra penser à commenter les lignes liées à MPD, c.-à-d. les deux lignes en-dessous de echo " MPD (server)" (qui apparaît deux fois, donc quatre lignes à commenter en tout). Fonctionne pour IPv4+IPv6. :)

              • [^] # Re: j'ai fait le bourrin, j'ai demandé à "MAN"

                Posté par (page perso) . Évalué à 1.

                Bonjour,

                Merci pour ce retour! C'est en fait ce que je cherchais depuis un certain temps, mais sans réussir (bien au dela de mon niveau. J'ai abandonné la lecture de tc assez vite car je me suis rendu compte que je n'étais pas capable de mettre en oeuvre. Donc je vais essayer ton script.

                Tu dis dans le wiki:

                J’ai eu l’idée saugrenue de mettre en place de la QoS pour une connexion ADSL haut-débit telle que fournie aux particuliers.

                Pour moi ca ne smble pas saugrenu du tout, surtout en upload. La faiblesse du débit est une des limitations principales à l'auto-hebergement. Or le besoin de débit et de réactivité simultanément est rare. Donc ton script apporte une vrai réponse à ce problème.

                Après ces éloge, je dois dire que je vais quand même essayer de finir mon script avec XMLRPC. Si ça marche je serai content d'avoir réussi et je pourrais utiliser ton script en me disant que j'utilise quelque chose de mieux, mais que je pouvais résoudre mon problème moi même...

              • [^] # Re: j'ai fait le bourrin, j'ai demandé à "MAN"

                Posté par (page perso) . Évalué à 0.

                Je commence a me servir de cet outil...

                Merci

          • [^] # Re: j'ai fait le bourrin, j'ai demandé à "MAN"

            Posté par . Évalué à 2.

            si tu trouves la page php qui est executée par rutorrent, tu peux l'executer en ligne de commande, et donc en script avec

            php5-cli /chemin/vers/le/fichier.php

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.