Question

J'ai un script qui récupère les emplacements GeoIP de divers ips. Il est exécuté quotidiennement et je m'attendrai à avoir environ 50 000 ips à rechercher.

J'ai mis en place un système GeoIP. Je voudrais simplement éviter de devoir exécuter wget 50 000 fois par rapport.

Ce que je pensais, c’est qu’il doit exister un moyen de permettre à wget d’ouvrir une connexion avec l’url - puis de transmettre l’ip, pour ne pas avoir à rétablir la connexion.

Toute aide sera très appréciée.

Était-ce utile?

La solution

Si vous donnez à wget plusieurs adresses à la fois, avec des adresses consécutives appartenant au même serveur HTTP / 1.1 ( Connexion: keep-alive ), wget réutilisera la connexion déjà établie.

S'il y a trop d'adresses à répertorier sur la ligne de commande, vous pouvez les écrire dans un fichier et utiliser l'option -i / - input-file = . (et, conformément à la tradition UNIX, -i - / - fichier_entrée = - lit les entrées standard).

Il n’existe toutefois aucun moyen de conserver une connexion entre différents appels wget .

Autres conseils

Vous pouvez également écrire un script Ruby threadé pour exécuter wget sur plusieurs fichiers d'entrée simultanément afin d'accélérer le processus. Donc, si vous avez 5 fichiers contenant chacun 10 000 adresses, vous pouvez utiliser ce script:

#!/usr/bin/ruby

threads = []

for file in ARGV
  threads << Thread.new(file) do |filename|
    system("wget -i #{filename}")
  end
end

threads.each { |thrd| thrd.join }

Chacune de ces discussions utiliserait une connexion pour télécharger toutes les adresses d’un fichier. La commande suivante ne signifie alors que 5 connexions au serveur pour télécharger les 50 000 fichiers.

./fetch.rb "list1.txt" "list2.txt" "list3.txt" "list4.txt" "list5.txt"

Vous pouvez également écrire un petit programme (en Java, C ou autre) qui envoie la liste de fichiers sous forme de requête POST et le serveur renvoie un objet contenant des données à leur sujet. Ne devrait pas être trop lent non plus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top