Scorpio Posté(e) le 15 février Partager Posté(e) le 15 février Bien le bonjour, J'aurais une petit question. J'ai un fichier *.txt avec comme nom, exemple MesLiens.txt A l'intérieur de se fichier MesLiens.txt j'ai plus de 200 liens internet. Ma question est la suivante Comment puis-je contrôler les liens présent dans se fichier, afin de savoir quel liens est invalide. Pourquoi cette question ? Afin de gagner du temps Afin d'éviter de faire un à un la vérification de lien Afin que ceux ou celles qui se pose la même question et leurs réponse Merci d'avance Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
foetus Posté(e) samedi à 16:26 Partager Posté(e) samedi à 16:26 Un peu bash. Après il peut ne pas fonctionner par exemple, Amazon me renvoyait que le lien n'existe pas #!/bin/bash regex='^(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]\.[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]$' while IFS="" read -r p || [ -n "$p" ] do if [[ $p =~ $regex ]] then # if curl --head --silent $p > /dev/null 2>&1; then # test 1 # if wget --spider $p > /dev/null 2>&1; then # test 2 response=$(curl --connect-timeout 10 --max-time 15 --silent --head --write-out "%{http_code}" --output /dev/null "$p") # test 3 with timeout if [[ $response -eq 200 ]]; then printf '%s\n' " OK: $p" # link exists else printf '%s\n' "NOK: $p" # link doesn't exist or isn't reachable fi else printf '%s\n' "XXX: $p" # not a valid URL fi done < MesLiens.txt Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Scorpio Posté(e) samedi à 17:39 Auteur Partager Posté(e) samedi à 17:39 il y a une heure, foetus a dit : Un peu bash. Après il peut ne pas fonctionner par exemple, Amazon me renvoyait que le lien n'existe pas #!/bin/bash regex='^(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]\.[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]$' while IFS="" read -r p || [ -n "$p" ] do if [[ $p =~ $regex ]] then # if curl --head --silent $p > /dev/null 2>&1; then # test 1 # if wget --spider $p > /dev/null 2>&1; then # test 2 response=$(curl --connect-timeout 10 --max-time 15 --silent --head --write-out "%{http_code}" --output /dev/null "$p") # test 3 with timeout if [[ $response -eq 200 ]]; then printf '%s\n' " OK: $p" # link exists else printf '%s\n' "NOK: $p" # link doesn't exist or isn't reachable fi else printf '%s\n' "XXX: $p" # not a valid URL fi done < MesLiens.txt Bonsoir, Merci de ta réponse, il serait bien de : - Donné la source de se bash - D'expliquer les démarches à faire (car sa pourrait servir à d'autre personnes intéresser) - De proposer un truc qui fonctionne, car rien qu'en lisant " Après il peut ne pas fonctionner " sa donne pas trop envie d'essayer. Bonne soirée. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
L33thium Posté(e) samedi à 21:49 Partager Posté(e) samedi à 21:49 tou sa dans un paqué kdo a installé dans windows stp 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
foetus Posté(e) samedi à 22:54 Partager Posté(e) samedi à 22:54 Il y a 17 heures, Scorpio a dit : - Donné la source de se bash Looping through the content of a file in Bash, stackoverflow Check for valid link (URL), stackoverflow How to Verify if a URL Is Valid From the Linux Shell, baeldung.com Donc tout avec 1 recherche Internet Et au passage j'ai oublié de dire (si tu regardes le lien) "while IFS="" read -r p || [ -n "$p" ]; do" est assez compliqué parce qu'on peut faire seulement "while read p; do". Mais cela permet de ne pas supprimer les blancs inutiles et de ne pas faire 2-3 interprétations. Est-ce que ton fichier MesLiens.txt est bien formé ? Il y a 17 heures, Scorpio a dit : - D'expliquer les démarches à faire (car sa pourrait servir à d'autre personnes intéresser) Rien à n'expliquer : c'est du bash testé sous Cygwin (Windows 8.1) (<- tu crées 1 fichier .sh, tu chmod +x et tu l'exécutes) Tu n'as pas dit sous quel système d'exploitation tu es et comment tu voulais "ta solution" ? (exécutable, logiciel, programme C, bash, ... PowerShell, vbscript, ...) Sinon tu utilises 1 logiciel comme HTTrack et tu copies colles tes liens dedans. Il y a 17 heures, Scorpio a dit : - De proposer un truc qui fonctionne, car rien qu'en lisant " Après il peut ne pas fonctionner " sa donne pas trop envie d'essayer. Je pense que cela dépend de la politique du site : si tu télécharges la page en entier et tu "testes la page", tu peux savoir si le lien est fonctionnel. Par exemple, 1 lien peut être 1 page vide avec juste "session expired" (c'est 1 cas précis et spécifique, mais il faut tester la page) Mais cela peut être long (par exemple attendre 1 timeout si le site n'existe pas) Mais certains sites ont mis en place des politiques de ne pas répondre à toutes les requêtes (le test 1 et 3 envoie 1 requête HTTP HEAD) Et donc si le script dit "le lien existe" c'est 100% sûr, mais si il dit "le lien n'existe pas" bien on ne sait jamais. 1 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.