Page 1 sur 1

[aur/milcheck] - Un nouvel outil sympathique (info)

Publié : dim. 01 déc. 2019, 09:48
par waitnsea
Vu dans le forum : milcheck
Je me suis empressé d'ajouter un paragraphe à mon script de mise à jour...

Code : Tout sélectionner

echo "     ***** statut des miroirs actuels : *****"
milcheck
echo ""
read -n 1 -r -p "     OK [O/n] ?    Sinon, on lance reflector " touche      ## = édité : au lieu de "     OK ? Sinon, on lance reflector [O/n]" pas assez clair
 [[ "$touche" != "${touche#[Nn]}" ]] && sudo reflector --country France \
     --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

Re: [milcheck] - un nouvel outil AUR sympathique (info)

Publié : dim. 01 déc. 2019, 22:55
par papajoke
merci pour la découverte

perso, reflector n'est lancé que par un hook sur la liste des serveurs mais en cas de doute (pas de maj depuis 1 jour) ok c'est super
Il affiche bien l'état des miroirs sélectionnés en local par pacman

Code : Tout sélectionner

State Url                                    Protocol Country Completion % Delay h:m Avg dur s Dev dur s Score
   Ok http://mirror.cyberbits.eu/archlinux/  http     France           100      0:02      0.47      0.59   1.1
   Ok http://mirror.oldsql.cc/archlinux/     http     France           100      0:28      0.91      1.07   2.5
   Ok http://mirrors.celianvdb.fr/archlinux/ http     France           100      0:28      0.63      0.50   1.6
   Ok http://mir.archlinux.fr/               http     France          98.9      2:04      0.50      0.93   3.5
   Ok http://archlinux.mailtunnel.eu/        http     France           100      0:00      0.45      0.58   1.0
ps ton titre était trompeur : je pensais qu'il s'agissait d'un outil (pour) aur :oops:

petit bug ? la liste renvoyée par cet outil n'est pas toujours dans le même ordre ; pour moi elle devrait être dans l'ordre de mes serveur dans mirrorlist sinon il n'est pas possible de connaitre le premier choix de pacman

pour avoir la bonne liste, une erreur si une mauvaise url dans ma config et que surtout la compilation rust sur ma machine n'est pas top: une version python (mirrors-check)

Code : Tout sélectionner

#!/usr/bin/python

import urllib.request
import json
from datetime import timedelta

def get_local_mirrors():
    ret = ()
    with open("/etc/pacman.d/mirrorlist", "r") as f_list:
        for line in f_list:
            if not line.startswith("Server"):
                continue
            line = line.split("=")[1].strip()
            line = line.split("$")[0]
            ret = ret + (line,)
    return ret

locales_urls = get_local_mirrors()

with urllib.request.urlopen('https://www.archlinux.org/mirrors/status/json/') as f_url:
    req = f_url.read()
datas = json.loads(req)

ret = 0
servers = datas['urls']
servers = [x for x in servers if x['url'] in locales_urls]

print(f":: Etats de nos miroirs (au {datas['last_check'].replace('T', ' ')[:-2]}) utilisés par pacman:")
print(":: délai de mise à jour en h:mm,\t pays,\t Disponibilité,\t Protocole,\t Score\n")
for url in locales_urls:
    color_url = '\33[37m'
    try:
        m = [x for x in servers if x['url'] == url][0]
        t = str(timedelta(seconds=m['delay']))
        if not t.startswith("0"):
            color_url = '\33[93m'
        print(f"{color_url}{m['url']:55}\33[0m{':'.join(str(t).split(':')[:2]):<8}{m['country']:12}{m['completion_pct']*100:>4.0f}   {m['protocol']:8} {m['score']:.1f}")
    except IndexError:
        color_url = '\33[91m'
        print(f"{color_url}{url:55}\33[0mCe serveur n'existe plus dans la liste officielle des miroirs !")
        ret = 7
exit(ret)
Mais en fait il n'y a que le premier qui nous intéresse véritablement...

Re: [milcheck] - un nouvel outil AUR sympathique (info)

Publié : lun. 02 déc. 2019, 04:31
par waitnsea
papajoke a écrit : dim. 01 déc. 2019, 22:55 ps ton titre était trompeur : je pensais qu'il s'agissait d'un outil (pour) aur :oops:
corrigé - merci

Code : Tout sélectionner

$ time milcheck                                                                                                                            
State Url                                           Protocol Country Completion % Delay h:m Avg dur s Dev dur s Score
   Ok https://mirror.oldsql.cc/archlinux/           https    France           100      0:26      1.17      1.30   2.9
   Ok https://archlinux.mailtunnel.eu/              https    France           100      0:00      0.42      0.34   0.8
   Ok https://mirrors.arnoldthebat.co.uk/archlinux/ https    France           100      2:46      0.59      0.43   3.8
   Ok https://mirror.cyberbits.eu/archlinux/        https    France          95.7      0:02      1.58      1.85   3.6
   Ok https://mirrors.eric.ovh/arch/                https    France           100      3:10      0.99      0.77   4.9
   Ok https://mirror.wormhole.eu/archlinux/         https    France           100      2:04      0.86      0.74   3.7
   Ok https://mirror.thekinrar.fr/archlinux/        https    France           100      0:28      1.20      0.83   2.5
   Ok https://mirrors.celianvdb.fr/archlinux/       https    France           100      0:29      0.75      0.65   1.9
   Ok https://arch.nimukaito.net/                   https    France          98.9      1:50      0.88      0.62   3.4

milcheck  0,06s user 0,03s system 7% cpu 1,200 total

Code : Tout sélectionner

$ time milcheck.py                                                                                                                      
:: Etats de nos miroirs (au 2019-12-02 03:01:55.89) utilisés par pacman:
:: dernière mise à jour depuis h:mm,     pays,   Disponibilité,  Protocole,      Score

https://mirror.oldsql.cc/archlinux/                    0:26    France       100   https    2.9
https://archlinux.mailtunnel.eu/                       0:00    France       100   https    0.8
https://mirrors.arnoldthebat.co.uk/archlinux/          2:46    France       100   https    3.8
https://mirror.cyberbits.eu/archlinux/                 0:02    France        96   https    3.6
https://mirrors.eric.ovh/arch/                         3:10    France       100   https    4.9
https://mirror.wormhole.eu/archlinux/                  2:04    France       100   https    3.7
https://mirror.thekinrar.fr/archlinux/                 0:28    France       100   https    2.5
https://mirrors.celianvdb.fr/archlinux/                0:29    France       100   https    1.9
https://arch.nimukaito.net/                            1:50    France        99   https    3.4
milcheck.py  0,10s user 0,01s system 13% cpu 0,775 total
Toujours bon codeur papajoke ! La différence de temps d'exécution étant infime, chacun choisira VO ou VF ... :bravo:
Mais j'ai le même ordre de serveurs dans l'un ou l'autre.

Re: [aur/milcheck] - Un nouvel outil sympathique (info)

Publié : lun. 02 déc. 2019, 05:00
par sukolyn
salut,

Code : Tout sélectionner

[[ $touche != ${touche#[Nn]} ]]
j'aurais fait le contraire : uniquement si $touche vaut [oO], alors procéder; n'importe quelle autre touche provoque l'abandon

Code : Tout sélectionner

read -rsn -p 'procéder ? [oN] ' k
if [[ $k == [oO] ]]; then sudo reflector ...; else echo "abandon"; exit; fi

Re: [aur/milcheck] - Un nouvel outil sympathique (info)

Publié : lun. 02 déc. 2019, 05:35
par waitnsea
sukolyn a écrit : lun. 02 déc. 2019, 05:00 salut,

Code : Tout sélectionner

[[ $touche != ${touche#[Nn]} ]]
j'aurais fait le contraire : uniquement si $touche vaut [oO], alors procéder; n'importe quelle autre touche provoque l'abandon

Code : Tout sélectionner

read -rsn -p 'procéder ? [oN] ' k
if [[ $k == [oO] ]]; then sudo reflector ...; else echo "abandon"; exit; fi
C'est pour raccourcir et ne pas employer l'inutile if ... then

Re: [aur/milcheck] - Un nouvel outil sympathique (info)

Publié : lun. 02 déc. 2019, 06:45
par sukolyn
ma remarque ne porte pas sur l'emploi de if then else fi.
uniquement SI $touche vaut [oO], ALORS procéder
actuellement, ton script fonctionne à l'envers :

Code : Tout sélectionner

for t in p n o; do [[ $t != ${t#[nN]} ]] && echo "$t => proceed"; done
n => proceed
alors que le comportement souhaité semble être :

Code : Tout sélectionner

$ for t in p n o; do [[ $t == [oO] ]] && echo "$t => proceed"; done
o => proceed

Re: [aur/milcheck] - Un nouvel outil sympathique (info)

Publié : lun. 02 déc. 2019, 07:28
par papajoke
@waitnsea
je pense plutôt que tu as changé d'avis à un moment et qu'ici le prompt O/n est inversé - mais après c'est à chacun de savoir si il désire le oui ou Non par défaut

il y a toujours plusieurs façons de faire, on est stricte sur les entrées ou refuse qu'une seule... :

Code : Tout sélectionner

[[ "${REPLY^^}" == "O" ]] && echo "que Oui"
[[ "${REPLY^^}" != "N" ]] && echo "tout sauf Non"

Re: [aur/milcheck] - Un nouvel outil sympathique (info)

Publié : lun. 02 déc. 2019, 07:28
par waitnsea
@sukolyn
waitnsea a écrit : dim. 01 déc. 2019, 09:48

Code : Tout sélectionner

echo "     ***** statut des miroirs actuels : *****"
milcheck
echo ""
read -n 1 -r -p "     OK ? Sinon, on lance reflector [O/n]          " touche 
 [[ "$touche" != "${touche#[Nn]}" ]] && sudo reflector --country France \
     --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
La question c'est : le statut des miroirs est OK ?
J'ai donc bien voulu que mon script continue - sans lancer reflector - en appuyant simplement sur la touche Enter (ou n'importe quelle touche sauf [nN] ) = d'accord = réponse par défaut, sans aller chercher [oO],
et que par contre il lance reflector spécifiquement par [nN]
Tu n'as qu'à essayer et tu verras bien que ça fonctionne parfaitement
Maintenant, fais ce que tu veux chez toi :copain:

Re: [aur/milcheck] - Un nouvel outil sympathique (info)

Publié : lun. 02 déc. 2019, 07:38
par papajoke
Ok, juste une histoire de français :lol:
Pas compris non plus ta phrase pour moi la question n'était que "on lance reflector [O/n]" , merci à pacman de nous formater l'esprit !
OK ? [O/n] (Si non, on lance reflector) là je comprenais

Re: [aur/milcheck] - Un nouvel outil sympathique (info)

Publié : lun. 02 déc. 2019, 07:47
par waitnsea
papajoke a écrit : lun. 02 déc. 2019, 07:38 Ok, juste une histoire de français :lol:
Pas compris non plus ta phrase pour moi la question n'était que "on lance reflector [O/n]" , merci à pacman de nous formater l'esprit !
OK ? [O/n] (Si non, on lance reflector) là je comprenais
OK je modifie