Wget à distance

Bonjour, les amis

Je vous explique mon pb. J'ai un serveur qui tourne constamment mais en interface caractère. Je me connecte dessus depuis mon ordi sous kubuntu 9.10 par putty. Je voudrai pouvoir programmer des téléchargements de fichiers ddl sur mon serveur par putty depuis mon ordi. Est ce possible?

Merci de m'avoir consacré de votre temps.

12 réponses

Résumé de la discussion

Le fil porte sur l’exécution de téléchargements depuis un serveur Linux accessible par PuTTY depuis Kubuntu, avec la possibilité de lancer des wget en arrière-plan sans interrompre la session locale. Réponse clé indique d’utiliser ssh pour accéder au serveur, puis exécuter plusieurs commandes wget en arrière-plan via nohup, afin que les téléchargements continuent après déconnexion et sans bloquer l’ordinateur local. D’autres interventions suggèrent d’employer screen pour laisser des sessions actives, ou d’invoquer ssh avec des commandes entre quotes et d’ajouter -i pour une liste d’URL, -c et -t pour reprise et retries. En pratique, pour programmer des téléchargements, il faut soit combiner nohup et des listes d’URL, soit utiliser screen, et ajuster les options wget pour reprendre les téléchargements.

Bobot (l’IA à votre service)
  1. Contributeur
    Salut,

    Que veux-tu faire exactement ?
    Lancer des téléchargements sur ton serveur depuis ton PC Kubuntu via putty ?

    Putty n'est pas obligatoire sur Linux, il te suffit d'ouvrir un terminal et de te connecter à ton serveur :

    ssh -p 22 user@serveur

    CTRL+D pour te déconnecter

    Sinon pour lancer un téléchargement :

    ssh -p 22 user@serveur/chemin/rép/ wget URL_téléchargement


    Zen my nuggets ;-)
    0
    1. Contributeur
      En fait j'ai dit une connerie par rapport au chemin à donner ;-(

      Il ne faut pas le donner dans la syntaxe de "ssh", mais dans la commande qui suit et entourer les 2 commandes par des quotes :

      ssh -p 22 user@serveur 'cd /chemin/rép/ && wget URL_téléchargement'
      0
    2. Modérateur
      Salut,

      Ou en spécifiant le répertoire de destination ;-)
      ssh -p 22 user@serveur wget -P /chemin/rép/ URL_téléchargement
      0
  2. Merci zipe31, je vais tenter ta commande.
    0
    1. Salut,

      Si je ne me trompe pas, ça fonctionne parfaitement en utilisant la méthode donné par zipe31. Le seul problème est que pendant tout le téléchargement tu devras laisser tourner ton desktop et tu ne devras pas fermer putty.

      Tu peux regarder du côté de screen. Ce logiciel te permettra de créer des terminaux virtuels que tu pourras quitter sans fermer. Par la suite tu te reconnecte à ton serveur et tu pourras reprendre les terminaux que tu avais laissé dans le même état qu'à ton départ.

      @++ :- )
      0
      1. Je suis déja en train de lire sur screen. Mais la méthode de zipe31 ne parle pas de putty. Imaginons que je passe juste par un terminal linux comme l'a montré zipe31, si j'arrête mon ordinateur, est ce que le téléchargement continuera? Merci pour vos riches contributions.
        0
        1. Contributeur
          Re-

          Oui en utilisant screen ;-))
          0
      2. Je ne suis pas sure de vous suivre. Je voudrai pouvoir lancer les download sur le serveur et arrêter l'ordi à partir duquel j'ai pu les lancer. Par la méthode de zipe31, l'arrêt de l'ordi arrêtera tout mais par screen, les téléchargements continueront et à ma prochaine connexion au serveur, je pourrai voir où ils en sont. C'est bien ca les amis?
        0
        1. Ouais c'est bien ça...

          Sauf que tu devrais prendre le temps de lire la doc de screen, car je ne l'ai pas trop utilisé et je ne pourrais pas te dire exactement comment faire...

          @++ :- )
          0
      3. Contributeur
        Bon on va faire plus simple.

        Tu te connectes à ton serveur via putty ou via un terminal (ssh -p 22 user@serveur), puis tu vas dans le répertoire censé recevoir les downloads et tu tapes :

        nohup wget URL_téléchargement1 &
        nohup wget URL_téléchargement2 &
        nohup wget URL_téléchargement3 &
        etc.


        A partir de là, tu peux te déconnecter, tes téléchargements continueront comme si de rien n'était ;-))
        0
        1. Re,

          @zipe31: Je ne connaissais pas nohup, je vais la retenir celle-là :P

          @yayou : Petite astuce, si tu as plusieurs téléchargement à faire et que tu ne souhaites pas lancer 10 fois la même commande et surtout avoir 10 fois wget de lancé tu peux utiliser l'option -i de wget. Donc tu te place dans ton dossier téléchargement par exemple. Tu crée un fichier liste_url toujours par exemple et dans ce fichier tu place toute tes url de téléchargement, à raison d'une url par ligne.

          Par la suite il ne te reste plus qu'à lancer wget comme ceci. Exemple :
          nohup wget -i /home/yayou/telechargement/liste_url &


          Extrait du man :
           -i file 
                 --input-file=file 
                     Read URLs from a local or external file.  If - is specified as 
                     file, URLs are read from the standard input.  (Use ./- to read from a file literally named -.) 
          


          @++ :- )
          0
      4. Modérateur
        Salut,

        On peut aussi utiliser la commande at qui lance la commande à une certaine heure donnée.

        Voir man at

        Exemple :
        lami20j@debian-acer:~$ ls libtorrent-0.12.7.tar.gz   
        ls: impossible d'accéder à libtorrent-0.12.7.tar.gz: Aucun fichier ou dossier de ce type  
        lami20j@debian-acer:~$ at 17:51 12/27/2010  
        warning: commands will be executed using /bin/sh  
        at> wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.7.tar.gz  
        at> <EOT>  
        job 4 at Mon Dec 27 17:51:00 2010  
        lami20j@debian-acer:~$ at -l  
        4 Mon Dec 27 17:51:00 2010 a lami20j  
        lami20j@debian-acer:~$ ls libtorrent-0.12.7.tar.gz   
        ls: impossible d'accéder à libtorrent-0.12.7.tar.gz: Aucun fichier ou dossier de ce type  
        lami20j@debian-acer:~$ date  
        lundi 27 décembre 2010, 17:51:01 (UTC+0100)  
        lami20j@debian-acer:~$ ls libtorrent-0.12.7.tar.gz   
        libtorrent-0.12.7.tar.gz

        GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
        106485010510997108
        0
        1. Modérateur
          Si plusieurs téléchargements alors on peu mettre les commandes dans un script et lancer le script avec at

          lami20j@debian-acer:~$ cat ficwget 
          #!/bin/bash
          wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.7.tar.gz
          wget http://ftp.mozilla.org/...
          lami20j@debian-acer:~$ chmod +x ficwget 
          lami20j@debian-acer:~$ ls -l ficwget 
          -rwxr-xr-x 1 lami20j lami20j 174 27 déc.  18:00 ficwget
          lami20j@debian-acer:~$ ls libtorrent-0.12.7.tar.gz 
          ls: impossible d'accéder à libtorrent-0.12.7.tar.gz: Aucun fichier ou dossier de ce type
          lami20j@debian-acer:~$ ls firefox*
          ls: impossible d'accéder à firefox*: Aucun fichier ou dossier de ce type
          lami20j@debian-acer:~$ at 18:03 12/27/2010
          warning: commands will be executed using /bin/sh
          at> ./ficwget
          at> <EOT>
          job 5 at Mon Dec 27 18:03:00 2010
          lami20j@debian-acer:~$ at -l
          5	Mon Dec 27 18:03:00 2010 a lami20j
          lami20j@debian-acer:~$ date
          lundi 27 décembre 2010, 18:02:06 (UTC+0100)
          lami20j@debian-acer:~$ ls libtorrent-0.12.7.tar.gz 
          ls: impossible d'accéder à libtorrent-0.12.7.tar.gz: Aucun fichier ou dossier de ce type
          lami20j@debian-acer:~$ ls firefox*
          ls: impossible d'accéder à firefox*: Aucun fichier ou dossier de ce type
          lami20j@debian-acer:~$ at -l
          5	Mon Dec 27 18:03:00 2010 a lami20j
          lami20j@debian-acer:~$ date
          lundi 27 décembre 2010, 18:02:23 (UTC+0100)
          lami20j@debian-acer:~$ date
          lundi 27 décembre 2010, 18:03:34 (UTC+0100)
          lami20j@debian-acer:~$ at -l
          5	Mon Dec 27 18:03:00 2010 = lami20j
          lami20j@debian-acer:~$ ls libtorrent-0.12.7.tar.gz 
          libtorrent-0.12.7.tar.gz
          lami20j@debian-acer:~$ ls firefox-3.6.13.tar.bz2 
          firefox-3.6.13.tar.bz2
          lami20j@debian-acer:~$ 
          0
        2. Modérateur
          Encore mieux, je n'ai pas vu l'option -f de at
          Donc on mets tout simplement les commandes un fichier texte et ensuite on lance la commande at avec l'option -f qui permet de lire les commandes depuis un fichier

          lami20j@debian-acer:~$ rm libtorrent-0.12.7.tar.gz 
          lami20j@debian-acer:~$ rm firefox-3.6.13.tar.bz2 
          lami20j@debian-acer:~$ cat ficwget 
          wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.7.tar.gz
          wget http://ftp.mozilla.org/...
          lami20j@debian-acer:~$ ls libtorrent-0.12.7.tar.gz 
          ls: impossible d'accéder à libtorrent-0.12.7.tar.gz: Aucun fichier ou dossier de ce type
          lami20j@debian-acer:~$ ls firefox-3.6.13.tar.bz2 
          ls: impossible d'accéder à firefox-3.6.13.tar.bz2: Aucun fichier ou dossier de ce type
          lami20j@debian-acer:~$ date
          lundi 27 décembre 2010, 18:14:00 (UTC+0100)
          lami20j@debian-acer:~$ at -f ficwget 18:15 12/27/2010
          warning: commands will be executed using /bin/sh
          job 7 at Mon Dec 27 18:15:00 2010
          lami20j@debian-acer:~$ at -l
          7	Mon Dec 27 18:15:00 2010 a lami20j
          lami20j@debian-acer:~$ ls firefox-3.6.13.tar.bz2 
          ls: impossible d'accéder à firefox-3.6.13.tar.bz2: Aucun fichier ou dossier de ce type
          lami20j@debian-acer:~$ ls libtorrent-0.12.7.tar.gz 
          ls: impossible d'accéder à libtorrent-0.12.7.tar.gz: Aucun fichier ou dossier de ce type
          lami20j@debian-acer:~$ date
          lundi 27 décembre 2010, 18:14:49 (UTC+0100)
          lami20j@debian-acer:~$ date
          lundi 27 décembre 2010, 18:15:12 (UTC+0100)
          lami20j@debian-acer:~$ ls libtorrent-0.12.7.tar.gz 
          libtorrent-0.12.7.tar.gz
          lami20j@debian-acer:~$ ls firefox-3.6.13.tar.bz2 
          firefox-3.6.13.tar.bz2
          lami20j@debian-acer:~$ 
          0
        3. C'est très bon ça at -f, ça va m'être très utile, merci lami20j ;-)
          0
      5. Contributeur
        On continue dans le délire et pour le fun... ;-))

        Si jamais tu devais lancer la commande depuis un script via un shell (ou tout simplement depuis la ligne de commande) pour ne pas avoir à te connecter via putty, il suffit de rajouter le paramètre "-f" (Demande à ssh de basculer en arrière-plan juste avant d'exécuter la commande.) et de rediriger la sortie standard ainsi que celle d'erreur vers /dev/null.

        En combinaison avec l'option "-P" de lami20j (voir ici), ça donnerait :

        ssh -p 22 -f user@serveur 'nohup wget -P /chemin/rép/ URL_téléchargement >/dev/null 2>&1'

        0
        1. Modérateur
          On s'amuse bien hein? ;-)
          0
        2. Contributeur
          Ben à défaut de s'amuser réellement, on apprend en s'amusant ;-))
          0
      6. Les amis, c'est illégal de lire dans les pensées des autres. Vous êtes tous poursuivable :-)
        En tout cas, merci pour toutes ces possibilités, je vais les explorer. Je pense que je peux clore le sujet, avec votre accord bien évidemment.
        0
        1. Encore des petits soucis. Une fois que je me suis déconnecté. Y a t-il un moyen de voir où en ai wget une fois que je me serai reconnecté, de la mettre en pause, le relancer?
          De plus, je voudrai qu'il réessai indéfiniment mais qu'il fasse une pose de 5 minutes entre chaque téléchargement. Si je fais:

          nohup wget -t inf -w 300 -i /home/yayou/listUrl &

          ca va marcher?
          0
          1. Contributeur
            Si je fais:
            nohup wget -t inf -w 300 -i /home/yayou/listUrl &
            ca va marcher?

            Je ne vois pas pourquoi ça ne marcherait pas ;-\
            Dis-toi que la commande est exactement la même que si tu lances depuis le serveur...

            Une fois que je me suis déconnecté. Y a t-il un moyen de voir où en ai wget une fois que je me serai reconnecté,
            Euh... directement avec la barre de progression comme quand on le lance, non, mais tu peux toujours vérifier l'état de remplissage de ton dossier avec la commande "ls -lh /chemin/rep/" ou mieux :

            watch -d ls -lh /chemin/rep/

            Pour voir l'état d'avancement en direct. CTRL+C pour fermer.

            de la mettre en pause, le relancer?
            Ça je n'en sais rien, faudrait faire des tests. Déjà en récupérant le job au 1er plan (fg), mettre le processus en pause "CTRL+Z", repasser en arrière-plan (bg), etc.
            0
          2. Salut,

            Si tu veux qu'il réessai, mais qu'il continu où il était rendu et non qu'il recommence son téléchargement en cas d'échec, utilise cette commande.

            nohup wget -c -t int -w 300 -i /home/yayou/listUrl &


            Sinon je ne sais pas si il est possible de voir l'avancement des téléchargement avec cette commande.. ?

            Zip31 saurait probablement te le dire.

            @++ :- )
            0
        2. Les amis, je n'arrive pas à télécharger plus d'un fichier. J'ai et pourtant crée un fichier avec la liste des url à télécharger mais il ne télécharge que le fichier indiqué par le premier url et pour les autres, quand je vais dans nohup.out, pour chaque lien je vois Connecté puis en dessous Not found. Ca me fait ca pour chaque tentative. Une fois j'ai mis 2 url dans mon fichier de liste de téléchargement et wget a récupérer les deux fichiers. Mais cela ne s'est plus jamais reproduit, toujours les Not found. Auriez-vous une idée? Je précise que la méthode de enregistrements des url est bonne car j'ai mi le premier url de la même manière que j'ai mis les suivants.
          0
          1. Contributeur
            Salut,

            Affiche la commande exacte que tu utilises.
            Affiche aussi le contenu de ton fichier contenant ta liste d'URL avec la commande :

            cat -A fichier_liste_URL
            0
        3. Désolé, les amis. J'ai rajouté un espace entre les lignes pour que vous puissiez mieux voir. Mais dans le fichier lui-meme, je colle un lien puis je tape Entrer et je colle le second. Il n'y a donc aucun espace entre les liens.
          0