Bonjour,
Je me suis inspiré de votre sujet pour trouver une solution à mon problème qui est similaire au votre. Alors au lieu d’ouvrir un nouveau topic je la poste ici puisque ça répond à la question et je la trouve plus simple.
Contexte :
Je fais des scripts bash pour installer des logiciels/paquets (ça m’amuse )
et j’ai fais cette méthode, à chaque fois que j’ai installé un paquet qui n’est pas dans un dépôt, pour trouver la dernière version du paquet. Mon problème était qu’il y a à chaque fois au moins 3 versions sur la page web, par exemple comme ceci :
https://download.noalyss.eu/noalyss-package/new/
Pour pouvoir faire ça je voulais utiliser que des outils qui se trouve sur la majorité des systèmes Linux pour un portage facile. Certains de ces outils ne sont pas à présenter comme ‹ wget ›, ‹ awk ›, voire même ‹ tr ›. Mais j’en ai découvert un lors de ma recherche , ‹ w3m › c’est un web browser pour le terminal (w3m packaging badges - Repology). Et donc je me sers de ‹ w3m › exactement comme on se sert de ‹ cat › pour un fichier.
Solution :
for version in $(w3m https://URL/DU/SITE/WEB/ | tr -s ' ' | awk -F " " '$3 ~ /.[EXTENSION_DU_FICHIER]$/ {print $3}'); do
if [[ -z ${last_version} ]]; then
last_version=${version};
else
if [[ ${version} > ${last_version} ]]; then last_version=${version}; fi
fi
done
last_version="${last_version%.[EXTENSION_DU_FICHIER]}" #Supprime l’extension dans le nom du fichier
echo "La dernière version du paquet est : ${last_version}"
wget https://URL/DU/SITE/WEB/"${last_version}".sha256sum
wget https://URL/DU/SITE/WEB/"${last_version}".tar.gz
Donc dans mon exemple ça donne :
#Je mets les informations de la page web qui correspond à tous
#les fichiers dans la variable version_list pour que le code soit plus clair.
version_list=$(w3m https://download.noalyss.eu/noalyss-package/new/ | tr -s ' ' | awk -F " " '$3 ~ /.tar.gz$/ {print $3}')
for version in ${version_list}; do
if [[ -z ${last_version} ]]; then
last_version=${version};
else
if [[ ${version} > ${last_version} ]]; then last_version=${version}; fi
fi
done
last_version="${last_version%.tar.gz}"
echo "La dernière version de Noalyss est : ${last_version}"
wget https://download.noalyss.eu/noalyss-package/new/"${last_version}".sha256sum
wget https://download.noalyss.eu/noalyss-package/new/"${last_version}".tar.gz
Bien entendu certaines choses sont à modifier en fonction de chacun, hormis l’URL, il y aura aussi ce qu’il faut mettre dans le awk, tout dépend comment est fait le nom du paquet et les colonnes de la page web.