Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#2076 Le 14/11/2021, à 19:52

thib1984

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Merci de vos retours rapides smile

Jarodd a écrit :

@thib1984 Je l'ai essayé, je l'ai adopté !
C'est simple et efficace.
Il y a un lag de plusieurs secondes avant l'affichage (~20 avec le code postal), mais je suppose que cela vient de l'api ?


---> Etrange, je n'observe pas une telle latence. Tu pourrais me donner la commande que tu exécutes, pour voir si je reproduis?

EDIT : j'envisage de garder en "cache" (dans le dossier /tmp) la liste des villes que je récupère pour trouver le code postal etc... Ca sera pour une version future, mais je pensais le gain marginal...
EDIT2 : c'est quand meme 5Mo.... je ne m'étais pas rendu compte... Je mettrai un cache important je pense avec un petit warning quand il le rafraichira. Tu me confirmes avoir une (relative) petite connexion?

jlfh0816 a écrit :

@thib1984
Ca fonctionne très bien !

Seul petit problème : mon code postal (29217) n'est pas reconnu alors que celui de la ville d'à côté (29280) l'est.
Par contre, le nom de ma ville est bien reconnu (Plougonvelin), de même que celui déduit de mon IP.
Je te mets le message d'erreur obtenu lorsque j'utilise le code postal :

jlfh0816 @ Voyager1804  ~
└─ $ ▶ pyweatherfr -p 29217
erreur : la VILLE n'est pas en France
Traceback (most recent call last):
  File "/home/jlfh0816/.local/lib/python3.6/site-packages/pyweatherfr/pyweatherfr.py", line 288, in find
    if vjson.get(str(i)).get("country") is not None and vjson.get(str(i)).get("country") == 'FRA':
AttributeError: 'NoneType' object has no attribute 'get'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jlfh0816/.local/bin/pyweatherfr", line 11, in <module>
    sys.exit(pyweatherfr())
  File "/home/jlfh0816/.local/lib/python3.6/site-packages/pyweatherfr/__init__.py", line 23, in pyweatherfr
    find()
  File "/home/jlfh0816/.local/lib/python3.6/site-packages/pyweatherfr/pyweatherfr.py", line 301, in find
    compute_args().town+"'\"", "yellow"))
TypeError: must be str, not NoneType

PS: j'ai installé ton logiciel avec pip3


---> Reproduit et en cours de correction (par contre cela affichera les données de la première ville trouvée avec ce code postal -ici Conquet-). Pas moyen de savoir facilement quelle ville est la plus grande smile
Cela sera intégré dans la 1.3.1 que je vais pousser ce soir!
EDIT : poussé (pour l'instant ca affiche la première ville matchant le code postal). Pour te mettre à jour, au choix

pip3 install --upgrade pyweatherfr

ou

pyweatherfr -u

Dernière modification par thib1984 (Le 15/11/2021, à 08:41)

Hors ligne

#2077 Le 14/11/2021, à 20:11

Qid

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

thib1984 a écrit :

en cours de correction (par contre cela affichera les données de la première ville trouvée avec ce code postal -ici Conquet-). Pas moyen de savoir facilement quelle ville est la plus grande smile

Qu'est-ce qui te dit qu'on veut la plus grande... Je pense que sur un code postal qui correspondrait à plusieurs villes il faudrait proposer une sélection par choix multiples...


"GNU/Linux c'est que du bon mais M$ Windows ce n'est pas si mal"
Référent technique Ubuntu d'un Groupe d'Utilisateur du Libre
plus d'info sur mon profil

Hors ligne

#2078 Le 14/11/2021, à 20:24

thib1984

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Qid a écrit :
thib1984 a écrit :

en cours de correction (par contre cela affichera les données de la première ville trouvée avec ce code postal -ici Conquet-). Pas moyen de savoir facilement quelle ville est la plus grande smile

Qu'est-ce qui te dit qu'on veut la plus grande... Je pense que sur un code postal qui correspondrait à plusieurs villes il faudrait proposer une sélection par choix multiples...

Merci de ton retour. Je le note.
Le souci que je vois c'est qu'au final les villes avec des codes postaux identiques sont souvent très proches (donc prévisions météo identiques ou presque). Et cela demandera une action utilisateur supplémentaire qui peut être peu agréable.... Il faut que je réfléchisse. Peut-être un "warning" avec les possibilités pour afficher les autres villes associées aux codes postaux identiques en fin d'affichage avec la ville 'par défaut'?

Dernière modification par thib1984 (Le 14/11/2021, à 20:25)

Hors ligne

#2079 Le 14/11/2021, à 22:01

Qid

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

thib1984 a écrit :

Le souci que je vois c'est qu'au final les villes avec des codes postaux identiques sont souvent très proches (donc prévisions météo identiques ou presque). Et cela demandera une action utilisateur supplémentaire qui peut être peu agréable...

Humour : il faut dire que chercher la météo d'un lieu par son code postal est une idée de merde lol
Plus sérieusement on connaît bien plus facilement le nom d'un lieu que son code postal... Celà dit j'avoue avoir fait une remarque sans avoir testé l'application et j'ai une interrogation quand-même aussi : l'application se comporte comment si le lieu recherché n'est pas connu ou si il y a une faute de frappe ou juste d'orthographe ?


"GNU/Linux c'est que du bon mais M$ Windows ce n'est pas si mal"
Référent technique Ubuntu d'un Groupe d'Utilisateur du Libre
plus d'info sur mon profil

Hors ligne

#2080 Le 15/11/2021, à 08:48

thib1984

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Qid a écrit :
thib1984 a écrit :

Le souci que je vois c'est qu'au final les villes avec des codes postaux identiques sont souvent très proches (donc prévisions météo identiques ou presque). Et cela demandera une action utilisateur supplémentaire qui peut être peu agréable...

Humour : il faut dire que chercher la météo d'un lieu par son code postal est une idée de merde lol
Plus sérieusement on connaît bien plus facilement le nom d'un lieu que son code postal... Celà dit j'avoue avoir fait une remarque sans avoir testé l'application et j'ai une interrogation quand-même aussi : l'application se comporte comment si le lieu recherché n'est pas connu ou si il y a une faute de frappe ou juste d'orthographe ?

Il y a un message "explicite" et une option de recherche :

~ pyweatherfr saint-nazaire
erreur : pas de données trouvées
essayez de trouver un paramètre correct avec "pyweatherfr -s 'saint-nazaire'"

~ pyweatherfr -s 'saint-nazaire'
pour Saint-Nazaire (44) (44600), exécutez 'pyweatherfr saint-nazaire-44' or 'pyweatherfr -p 44600'
pour Saint (56110), exécutez 'pyweatherfr saint' or 'pyweatherfr -p 56110'
pour Saint-Nazaire-de-Valentane (82190), exécutez 'pyweatherfr saint-nazaire-de-valentane' or 'pyweatherfr -p 82190'
pour Saint-Nazaire-d'Aude (11120), exécutez 'pyweatherfr saint-nazaire-d-aude' or 'pyweatherfr -p 11120'
pour Saint-Nazaire-sur-Charente (17780), exécutez 'pyweatherfr saint-nazaire-sur-charente' or 'pyweatherfr -p 17780'
pour Sai (61200), exécutez 'pyweatherfr sai' or 'pyweatherfr -p 61200'
pour Ablain-Saint-Nazaire (62153), exécutez 'pyweatherfr ablain-saint-nazaire' or 'pyweatherfr -p 62153'
pour Saint-Nazaire (66) (66570), exécutez 'pyweatherfr saint-nazaire-66' or 'pyweatherfr -p 66570'
pour Saint-Nazaire-en-Royans (26190), exécutez 'pyweatherfr saint-nazaire-en-royans' or 'pyweatherfr -p 26190'
pour Saint-Nazaire-le-Désert (26340), exécutez 'pyweatherfr saint-nazaire-le-desert' or 'pyweatherfr -p 26340'
pour Saint-Nazaire (30) (30200), exécutez 'pyweatherfr saint-nazaire-30' or 'pyweatherfr -p 30200'
pour Saint-Nazaire-des-Gardies (30610), exécutez 'pyweatherfr saint-nazaire-des-gardies' or 'pyweatherfr -p 30610'
pour Saint-Avit-Saint-Nazaire (33220), exécutez 'pyweatherfr saint-avit-saint-nazaire' or 'pyweatherfr -p 33220'
pour Saint-Nazaire-de-Ladarez (34490), exécutez 'pyweatherfr saint-nazaire-de-ladarez' or 'pyweatherfr -p 34490'
pour Saint-Nazaire-de-Pézan (34400), exécutez 'pyweatherfr saint-nazaire-de-pezan' or 'pyweatherfr -p 34400'
pour Saint-Nazaire-les-Eymes (38330), exécutez 'pyweatherfr saint-nazaire-les-eymes' or 'pyweatherfr -p 38330'

Hors ligne

#2081 Le 15/11/2021, à 09:31

Qid

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Han... C'est vrai qu'on parlait des code postaux

thib1984 a écrit :

Il faut que je réfléchisse. Peut-être un "warning" avec les possibilités pour afficher les autres villes associées aux codes postaux identiques en fin d'affichage avec la ville 'par défaut'?

Mais tu viens à l'instant de montrer la difficulté de gestion quand un nom de ville identique existe dans plusieurs départements...

Sinon à part ça j'avais une question de l'ordre de la fiabilité des prévisions météo proposées aussi...  Mais j'ai quand-même fini par aller voir ta page github et j'y ai trouvé ma réponse... Sauf qu'un truc m'interpelle du coup : la météo française est donc renvoyé par un site Suisse... Je suppose que ce choix vient de la facilité d'utilisation de leur API et que "la chaîne Météo" ou "Météo Ciel" sont moins simple à réutiliser ?

En tous cas c'est clair que les 2 images de présentation donnent vraiment envie de l'essayer...

D'ailleurs pour voir je me suis permis de regarder via le site source la météo de chez moi et de la grosse ville d'à côté et ça m'a permis de découvrir un élément qui pourrait être important de connaître via ton application et que je ne crois pas avoir vu sur les screenshots car ça démonte un peu mon interrogation du début de ce post : le site dit clairement de quelle station météo il a chopé les données...

Bon en tous cas du coups je vais peut être finir par me l'installer sur mon serveur... Sauf que si c'est pour le consulter en ssh à partir de mon téléphone comme ça risque d'être le cas j'ai des gros doute sur le rendu final...


"GNU/Linux c'est que du bon mais M$ Windows ce n'est pas si mal"
Référent technique Ubuntu d'un Groupe d'Utilisateur du Libre
plus d'info sur mon profil

Hors ligne

#2082 Le 15/11/2021, à 09:46

thib1984

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Qid a écrit :

Han... C'est vrai qu'on parlait des code postaux

thib1984 a écrit :

Il faut que je réfléchisse. Peut-être un "warning" avec les possibilités pour afficher les autres villes associées aux codes postaux identiques en fin d'affichage avec la ville 'par défaut'?

Mais tu viens à l'instant de montrer la difficulté de gestion quand un nom de ville identique existe dans plusieurs départements...

Sinon à part ça j'avais une question de l'ordre de la fiabilité des prévisions météo proposées aussi...  Mais j'ai quand-même fini par aller voir ta page github et j'y ai trouvé ma réponse... Sauf qu'un truc m'interpelle du coup : la météo française est donc renvoyé par un site Suisse... Je suppose que ce choix vient de la facilité d'utilisation de leur API et que "la chaîne Météo" ou "Météo Ciel" sont moins simple à réutiliser ?

En tous cas c'est clair que les 2 images de présentation donnent vraiment envie de l'essayer...

D'ailleurs pour voir je me suis permis de regarder via le site source la météo de chez moi et de la grosse ville d'à côté et ça m'a permis de découvrir un élément qui pourrait être important de connaître via ton application et que je ne crois pas avoir vu sur les screenshots car ça démonte un peu mon interrogation du début de ce post : le site dit clairement de quelle station météo il a chopé les données...

Bon en tous cas du coups je vais peut être finir par me l'installer sur mon serveur... Sauf que si c'est pour le consulter en ssh à partir de mon téléphone comme ça risque d'être le cas j'ai des gros doute sur le rendu final...


Merci pour ton retour, j'ai pas mal bossé sur les émojis qui rendent le rendu "mignon". En effet, l'api que j'attaque est complètement "libre". Peut etre que sur une version future je passerai sur meteo-france, mais ca me demanderait de modifier pas mal de choses...
Bonne idée pour la station! Je crois avoir vu des infos la dessus justement dans les json.
Là, il faut vraiment que je travaille sur la mise en cache de la liste des villes. J'aimerai aussi différencier les chutes de pluie des chute des neige smile

PS : pour ton serveur ssh, si tu as des soucis d'affichage, tu peux utiliser les options -n (pour desactiver couleur et emoji) et - c (pour condenser la sortie).

Hors ligne

#2083 Le 15/11/2021, à 11:17

CM63

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Il faudrait faire des forks là, qu'est-ce que c'est que ce sujet fourre-tout?


Quoi? Quelque chose que je ne connais pas et qui me fait l'affront d'exister?!

Hors ligne

#2084 Le 15/11/2021, à 11:45

Qid

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

CM63 a écrit :

Il faudrait faire des forks là, qu'est-ce que c'est que ce sujet fourre-tout?

C'est vrai que ce sujet ne se prête pas vraiment à réagir à un script proposé... Surtout si ça doit se faire sur la durée... J'arrête donc là en remerciant thib1984 pour son "travail" et ses retours sur mes commentaires...


"GNU/Linux c'est que du bon mais M$ Windows ce n'est pas si mal"
Référent technique Ubuntu d'un Groupe d'Utilisateur du Libre
plus d'info sur mon profil

Hors ligne

#2085 Le 15/11/2021, à 11:57

thib1984

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

CM63 a écrit :

Il faudrait faire des forks là, qu'est-ce que c'est que ce sujet fourre-tout?

neutral Désolé
Je comprends smile et en même temps je trouverais pas ça très modeste que je crée un topic sur "mes" applis... sad

Hors ligne

#2086 Le 15/11/2021, à 16:52

Hizoka

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

thib1984, pourtant qui peut le faire aussi bien que toi ?

Tu présentes ton taf, c'est le but de https://forum.ubuntu-fr.org/viewforum.php?id=69 en autre.

C'est toi qui l'a fait, c'est donc toi le mieux placé pour en parler et le partager.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#2087 Le 15/11/2021, à 22:24

thib1984

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Hizoka a écrit :

thib1984, pourtant qui peut le faire aussi bien que toi ?

Tu présentes ton taf, c'est le but de https://forum.ubuntu-fr.org/viewforum.php?id=69 en autre.

C'est toi qui l'a fait, c'est donc toi le mieux placé pour en parler et le partager.


J'ai suivi tes conseils, je te remercie smile
@Jarodd : la nouvelle version de pyweatherfr est poussée avec la mise en place d'un cache!

Hors ligne

#2088 Le 15/11/2021, à 22:30

Qid

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

thib1984 a écrit :
Hizoka a écrit :

thib1984, pourtant qui peut le faire aussi bien que toi ?

Tu présentes ton taf, c'est le but de https://forum.ubuntu-fr.org/viewforum.php?id=69 en autre.

C'est toi qui l'a fait, c'est donc toi le mieux placé pour en parler et le partager.


J'ai suivi tes conseils, je te remercie smile

Bon je continue ici pour éviter de pourrir un "autre" de tes sujets... Ça va tu t'amuses bien à ce que je vois wink merci beaucoup pour tout ça wink ... Par contre juste une question : pourquoi pip ? C'est quoi ce truc par rapport aux deb ? Est-ce que c'est bien tout aussi propre à l'install/desinstall ?


"GNU/Linux c'est que du bon mais M$ Windows ce n'est pas si mal"
Référent technique Ubuntu d'un Groupe d'Utilisateur du Libre
plus d'info sur mon profil

Hors ligne

#2089 Le 15/11/2021, à 22:42

thib1984

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

C'est une question générique big_smile
J'aime bien python que je trouve assez puissant pour une utilisation sur des programmes "relativement" simples mais demandant un peu plus de fonctionnalités qu'en bash.
Pip permet de pouvoir porter le programme sur linux, mac et windows, ca les rend multi-plateforme.
Niveau installation, c'est assez simple "pip3 install/ pip3 uninstall" smile

Hors ligne

#2090 Le 08/08/2022, à 19:59

Zergy

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Hop,

Comme je suis fainéant, j'utilise moi aussi quelques scripts.

Colorisation des textes et gestion des messages et erreurs :
Par vraiment des scripts complets, mais deux scripts que j'utilise souvent dans d'autres.

Colorisation des texts

  • Type : Bash

  • Droits : root:staff, 0644

  • Emplacement par défaut : /usr/local/lib/textColours

# color reset
res=$(tput sgr0)

# emphasized (bolded) text
em=$(tput bold)

# regular colors
k=$(tput setaf 0)
r=$(tput setaf 1)
g=$(tput setaf 2)
y=$(tput setaf 3)
b=$(tput setaf 4)
m=$(tput setaf 5)
c=$(tput setaf 6)
w=$(tput setaf 7)

# background colors
bgk=$(tput setab 0)
bgr=$(tput setab 1)
bgg=$(tput setab 2)
bgy=$(tput setab 3)
bgb=$(tput setab 4)
bgm=$(tput setab 5)
bgc=$(tput setab 6)
bgw=$(tput setab 7)
bglk=$(tput setab 8)
bglr=$(tput setab 9)
bglg=$(tput setab 10)
bgly=$(tput setab 11)
bglb=$(tput setab 12)
bglm=$(tput setab 13)
bglc=$(tput setab 14)
bglw=$(tput setab 15)

# emphasized (bolded) colors
emk=${em}${k}
emr=${em}${r}
emg=${em}${g}
emy=${em}${y}
emb=${em}${b}
emm=${em}${m}
emc=${em}${c}
emw=${em}${w}

Gestion des messages

  • Type : BASH

  • Droits : root:staff, 0644

  • Emplacement par défaut : /usr/local/lib/messagesFunctions

#! /usr/bin/env bash

. "/usr/local/lib/textColours"

if [ -z ${TERM} ]; then
	${TERM} = "xterm";
fi

actionMessage() {
        action_type="${1}";
        action_message="${2}";

        tput civis;

        case ${action_type} in
        "action")
                echo -en "[....] ${action_message}";
        ;;
        "info")
                echo -e "[${c}info${res}] ${action_message}";
        ;;
        esac
}

# Gestion des erreurs
errorCheck() {
        error_code="${?}";
        error_message="${2}";
        exit="${1}";
 
        tput hpa 0;
 
        if [ ${error_code} == 0 ]; then
                echo -e "[${g} ok ${res}]";
                tput cnorm;
        else
                if [ ${exit} == "1" ]; then
                        tput el;
                        echo -e "[${r}FAIL${res}] ${error_message} (${error_code})";
                        tput cnorm;
                        exit ${error_code};
                else
                        tput el;
                        echo -e "[${y}warn${res}] ${error_message} (${error_code})";
                        tput cnorm;
                fi
        fi
}

Installer ou mettre à jour DevilutionX
DevilutionX est un portage de Diablo 1 pour les OS moderne, le jeu est considéré comme un abandongiciel vu que Blizzard ne le vend plus, il vous faudra toutefois les fichiers .mpq du jeu original (disponible chez GOG) pour qu'il démarre.

Fichier de configuration :

  • Type : BASH

  • Droits : root:staff, 0644

  • Emplacement par défaut : /usr/local/etc/update-devilutionx.conf

# Packages to install
fedora_packages_list="cmake gcc-c++ glibc-devel libstdc++-static SDL2-devel libsodium-devel libpng-devel bzip2-devel gmock-devel gtest-devel libasan libubsan fmt-devel"
suse_packages_list="cmake curl gcc-c++ glibc-devel libstdc++-devel libSDL2-devel libsodium-devel libpng16-devel libbz2-devel libasan8 libubsan1 fmt-devel"
ubuntu_packages_list="cmake curl g++ libsdl2-dev libsodium-dev libpng-dev libbz2-dev libgtest-dev libgmock-dev libsdl2-image-dev libfmt-dev smpq gettext poedit"

# Git download directory
git_dir="/tmp/devilutionx.XXXXXXXXXXXX"

# Github/Gitlab repository
git_repo="diasurgical/devilutionX"

# Installation directory
install_dir="/opt/devilutionx"

# Log file
log_file="/var/log/update-devilutionx.log"

# Data file URL and name
data_file="devilutionx-data.txz"
date_url="XXX" # URL contenant l'archive

Fichier éxécutable :

  • Type : BASH

  • Droits : root:staff, 0755

  • Emplacement par défaut : /usr/local/sbin/update-devilutionx

#! /usr/bin/env bash
 
################################################################################
#                                                                              #
# LICENCE                                                                      #
#                                                                              #
# This program is free software: you can redistribute it and/or modify it      #
# under the terms of the GNU General Public License as published by the Free   #
# Software Foundation, either version 3 of the License, or (at your option)    #
# any later version.                                                           #
#                                                                              #
# This program is distributed in the hope that it will be useful, but WITHOUT  #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or        #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for     #
# more details.                                                                #
#                                                                              #
# You should have received a copy of the GNU General Public License along with #
# this program.  If not, see <http://www.gnu.org/licenses/>.                   #
#                                                                              #
################################################################################
 
################################################################################
#                                                                              #
# DESCRIPTION                                                                  #
#                                                                              #
# Ce programme permet la mise à jour du jeu DevilutionX (Diablo), il se        #
# contente de récupérer la dernière version via git et de l'installer via      #
# compilation.                                                                 #
#                                                                              #
#                                                                              #
# VARIABLES                                                                    #
#                                                                              #
# - fedora_packages_list : Liste des paquets à installer sur les distributions #
#   Fedora ou dérivées.                                                        #
# - ubuntu_packages_list : Listes de paquets à installer sur les distributions #
#   Ubuntu ou dérivées.                                                        #
# - git_dir : Dossier où le contenu de la commande git sera stocké.            #
# - install_dir : Dossier où le logiciel sera installé.                        #
#                                                                              #
#                                                                              #
# FONCTIONS                                                                    #
#                                                                              #
# - check_deps() : Vérifier la version de la distribution et installe les      #
#   paquets de dépendances requis.                                             #
# - install() : Utilise les commandes de compilation nécessaire à              #
#   l'installation du programme.                                               #
#                                                                              #
#                                                                              #
# AUTEUR(S)                                                                    #
#                                                                              #
# - Collyer Cédric <collyer.cedric@zergy.net>                                  #
#                                                                              #
#                                                                              #
# DERNIER(S) CHANGEMENT(S) :                                                   #
#                                                                              #
# - 02/08/2022 : Débogage                                                      #
# - 06/03/2021 : Version 1.0                                                   #
#                                                                              #
################################################################################
 
# Variables
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin";
 
. "/usr/local/lib/messagesFunctions";
. "/usr/local/etc/update-devilutionx.conf";
 
check_deps() {
        distro=$(lsb_release -i | awk '{ print $3 }');
        case ${distro} in
                "CentOS" | "Fedora" | "RedHatEnterpriseServer" | "Scientific")
                        actionMessage "action" "Vérification des paquets installés...";
                        /usr/bin/dnf -qy install ${fedora_packages_list} > /dev/null 2> "${log_file}";
                        errorCheck 1 "Erreur lors de la vérification des paquets.";
                        ;;
                "Debian" | "Linuxmint" | "Ubuntu")
                        actionMessage "action" "Vérification des paquets installés...";
                        /usr/bin/apt --quiet=2 --yes install ${ubuntu_packages_list} > /dev/null 2> "${log_file}";
                        errorCheck 1 "Erreur lors de la vérification des paquets.";
                        ;;
                "openSUSE")
                        actionMessage "action" "Vérification des paquets installés...";
                        /usr/bin/zypper --quiet --non-interactive install ${SUSE_PACKAGES_LIST} > /dev/null 2> "${log_file}";
                        errorCheck 1 "Erreur lors de la vérification des paquets.";
                        ;;
                *)
                        echo -e "Ce programme n'est compatible qu'avec les distributions suivantes :\n- CentOS\n- Fedora\- RHEL\n- Scientific Linux\n- Debian\n- Linux Mint\n- Ubuntu";
                        exit 1;
                        ;;
        esac
}

install() {
        latest_version=$(curl --silent "https://api.github.com/repos/${git_repo}/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/');
        actionMessage "action" "Clonage du dépôt GIT...";
        temp_dir=$(mktemp -d "${git_dir}" 2>> "${log_file}") && git clone https://github.com/${git_repo} "${temp_dir}" > /dev/null 2>> "${log_file}";
        errorCheck 1 "Erreur lors du clonage du GIT.";
        actionMessage "action" "Compilation...";
        cd "${temp_dir}" && cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release > /dev/null 2>> "${log_file}" && cmake --build build -j $(nproc) > /dev/null 2>> "${log_file}"; 
        errorCheck 1 "Erreur lors de la compilation.";
        [ ! -d "${install_dir}" ] && mkdir -p "${install_dir}";
        [ -f "${install_dir}/devilutionx.mpq" -a -f "${install_dir}/devilutionx" -a -f "${install_dir}/devilutionx.desktop" -a -f "${install_dir}/devilutionx-hellfire.desktop" -a -f "${install_dir}/icon.png" -a -f "${install_dir}/hellfire.png" ] && rm -f "${install_dir}/devilutionx.mpq" "${install_dir}/devilutionx" "${install_dir}/devilutionx.desktop" "${install_dir}/devilutionx-hellfire.desktop" "${install_dir}/icon.png" "${install_dir}/hellfire.png";
        actionMessage "action" "Installation...";
        mv "./build/devilutionx.mpq" "./build/devilutionx" "./Packaging/nix/devilutionx.desktop" "./Packaging/nix/devilutionx-hellfire.desktop" "./Packaging/resources/icon.png" "./Packaging/resources/hellfire.png" "${install_dir}/" > /dev/null 2>> "${log_file}" && chgrp -R games ${install_dir} 2>> "${log_file}" && chmod -R g+w ${install_dir} 2>> "${log_file}";
        [ ! -h "/usr/local/games/devilutionx" ] && ln -s "/opt/devilutionx/devilutionx" "/usr/local/games/devilutionx";
        errorCheck 1 "Erreur lors de l'installation.";
        cd ~;
        rm -fr "${temp_dir}";

        # Décommentez la section suivant si vous disposez d'un serveur HTTP(S) avec les fichiers MPQ du jeu.
#        if [ ! -f "${install_dir}/diabdat.mpq" ]; then
#                actionMessage "action" "Récupération des données.";
#                wget "${date_url}/${data_file}" -O "/tmp/${data_file}" > /dev/null 2>> "${log_file}" && cd "${install_dir}" && tar -xJf "/tmp/${data_file}" 2>> "${log_file}" && chgrp games "${install_dir}/"*.mpq 2>> "${log_file}" && chmod g+w "${install_dir}/"*.mpq 2>> "${log_file}" && rm -f "/tmp/${data_file}";
#                errorCheck 1 "Erreur lors de la récupération des données.";
#        fi
}

main() {
        check_deps;
        install;
}
 
main;
 
exit 0;

Installer ou mettre à jour Hamsket
Hamsket est un logiciel pour centraliser tout vos réseaux asociaux (c'est un chromium spécialisé)

Fichier de configuration :

  • Type : BASH

  • Droits : root:staff, 0644

  • Emplacement par défaut : /usr/local/etc/update-hamsket.conf

# CPU architecture, ia32 or x64
arch="amd64"

# Github/Gitlab repository
git_repo="TheGoddessInari/hamsket"

# Installation directory
install_dir="/opt"

# Log file
log_file="/var/log/update-hamsket.log"

Fichier éxécutable :

  • Type : BASH

  • Droits : root:staff, 0755

  • Emplacement par défaut : /usr/local/sbin/update-hamsket

#! /usr/bin/env bash
 
################################################################################
#                                                                              #
# LICENCE                                                                      #
#                                                                              #
# This program is free software: you can redistribute it and/or modify it      #
# under the terms of the GNU General Public License as published by the Free   #
# Software Foundation, either version 3 of the License, or (at your option)    #
# any later version.                                                           #
#                                                                              #
# This program is distributed in the hope that it will be useful, but WITHOUT  #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or        #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for     #
# more details.                                                                #
#                                                                              #
# You should have received a copy of the GNU General Public License along with #
# this program.  If not, see <http://www.gnu.org/licenses/>.                   #
#                                                                              #
################################################################################
 
################################################################################
#                                                                              #
# DESCRIPTION                                                                  #
#                                                                              #
# Ce programme permet la mise à jour de Hamsket, il se contente de récupérer la#
# dernière version via git et de l'installer via décompression.                #
#                                                                              #
#                                                                              #
# VARIABLES                                                                    #
#                                                                              #
# - arch : Architecture processeur.                                            #
# - install_dir : Dossier où le logiciel sera installé.                        #
#                                                                              #
#                                                                              #
# FONCTIONS                                                                    #
#                                                                              #
# - install() : Utilise les commandes de compilation nécessaire à              #
#   l'installation du programme.                                               #
#                                                                              #
#                                                                              #
# AUTEUR(S)                                                                    #
#                                                                              #
# - Collyer Cédric <collyer.cedric@zergy.net>                                  #
#                                                                              #
#                                                                              #
# DERNIER(S) CHANGEMENT(S) :                                                   #
#                                                                              #
# - 02/08/2022 : Ajout de la création du lien symbolique                       #
# - 03/07/2021 : Version 1.0                                                   #
#                                                                              #
################################################################################
 
# Variables
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin";
 
. "/usr/local/lib/messagesFunctions";
. "/usr/local/etc/update-hamsket.conf";
 
install() {
        latest_version=$(curl --silent "https://api.github.com/repos/${git_repo}/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/');
        actionMessage "action" "Téléchargement...";
        wget "https://github.com/${git_repo}/releases/download/${latest_version}/hamsket-${latest_version}.tar.gz" -O "/tmp/hamsket.tar.gz" > /dev/null 2>> "${log_file}";
        errorCheck 1 "Erreur lors du téléchargement.";
        actionMessage "action" "Installation...";
        [ -d "${install_dir}" ] && rm -fr "${install_dir}/hamsket" > /dev/null 2>> "${log_file}" && cd "${install_dir}" && tar -xvzf "/tmp/hamsket.tar.gz" > /dev/null 2>> "${log_file}" && mv "${install_dir}/hamsket-${latest_version}" "${install_dir}/hamsket" > /dev/null 2>> "${log_file}" && chmod -R go-w "${install_dir}/hamsket" && rm -f "/tmp/hamsket.tar.gz" > /dev/null 2>> "${log_file}"; 
        [ ! -h "/usr/local/bin/hamsket" ] && ln -s "/opt/hamsket/hamsket" "/usr/local/bin/hamsket";
        errorCheck 1 "Erreur lors de la l'installation.";
}

main() {
        install;
}
 
main;
 
exit 0;

Installer ou mettre à jour Razer Commander
Razer Commander est une interface GTK3 pour OpenRazer.

Fichier de configuration :

  • Type : BASH

  • Droits : root:staff, 0644

  • Emplacement par défaut : /usr/local/etc/update-razercommander.conf

# Packages to install
ubuntu_packages_list="libglib2.0-dev pkg-config meson libappstream-glib-dev"

# Git download directory
git_dir="/tmp/razercommander.XXXXXXXXXXXX"

# Github/Gitlab repository
git_repo="gabmus/razercommander"

# Installation directory
install_dir="/opt/razercommander"

# Log file
log_file="/var/log/update-razercommander.log"

Fichier éxécutable :

  • Type : BASH

  • Droits : root:staff, 0755

  • Emplacement par défaut : /usr/local/sbin/update-razercommander

#! /usr/bin/env bash
 
################################################################################
#                                                                              #
# LICENCE                                                                      #
#                                                                              #
# This program is free software: you can redistribute it and/or modify it      #
# under the terms of the GNU General Public License as published by the Free   #
# Software Foundation, either version 3 of the License, or (at your option)    #
# any later version.                                                           #
#                                                                              #
# This program is distributed in the hope that it will be useful, but WITHOUT  #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or        #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for     #
# more details.                                                                #
#                                                                              #
# You should have received a copy of the GNU General Public License along with #
# this program.  If not, see <http://www.gnu.org/licenses/>.                   #
#                                                                              #
################################################################################
 
################################################################################
#                                                                              #
# DESCRIPTION                                                                  #
#                                                                              #
# Ce programme permet la mise à jour du programme Razer Commander, il se       #
# contente de récupérer la dernière version via git et de l'installer via      #
# compilation.                                                                 #
#                                                                              #
#                                                                              #
# VARIABLES                                                                    #
#                                                                              #
# - ubuntu_packages_list : Listes de paquets à installer sur les distributions #
#   Ubuntu ou dérivées.                                                        #
# - git_dir : Dossier où le contenu de la commande git sera stocké.            #
# - install_dir : Dossier où le logiciel sera installé.                        #
#                                                                              #
#                                                                              #
# FONCTIONS                                                                    #
#                                                                              #
# - check_deps() : Vérifier la version de la distribution et installe les      #
#   paquets de dépendances requis.                                             #
# - install() : Utilise les commandes de compilation nécessaire à              #
#   l'installation du programme.                                               #
#                                                                              #
#                                                                              #
# AUTEUR(S)                                                                    #
#                                                                              #
# - Collyer Cédric <collyer.cedric@zergy.net>                                  #
#                                                                              #
#                                                                              #
# DERNIER(S) CHANGEMENT(S) :                                                   #
#                                                                              #
# - 02/08/2022 : Débogage                                                      #
# - 01/08/2022 : Version 1.0                                                   #
#                                                                              #
################################################################################
 
# Variables
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin";

. "/usr/local/lib/messagesFunctions";
. "/usr/local/etc/update-razercommander.conf";
 
check_deps() {
        distro=$(lsb_release -i | awk '{ print $3 }');
        case ${distro} in
                "Debian" | "Linuxmint" | "Ubuntu")
                        actionMessage "action" "Vérification des paquets installés...";
                        /usr/bin/apt --quiet=2 --yes install ${ubuntu_packages_list} > /dev/null 2> "${log_file}";
                        errorCheck 1 "Erreur lors de la vérification des paquets.";
                        ;;
                *)
                        echo -e "Ce programme n'est compatible qu'avec les distributions suivantes :\n- Debian\n- Linux Mint\n- Ubuntu";
                        exit 1;
                        ;;
        esac
}

install() {
        actionMessage "action" "Clonage du dépôt GIT...";
        temp_dir=$(mktemp -d "${git_dir}" 2>> "${log_file}") && git clone https://github.com/${git_repo} "${temp_dir}" > /dev/null 2>> "${log_file}";
        errorCheck 1 "Erreur lors du clonage GIT.";
        mkdir "${temp_dir}/builddir";
        cd "${temp_dir}/builddir";
        actionMessage "action" "Compilation...";
        meson .. > /dev/null 2>> "${log_file}" && meson configure -Dprefix="${install_dir}" > /dev/null 2>> "${log_file}";
        errorCheck 1 "Erreur lors de la compilation.";
        actionMessage "action" "Installation...";
        ninja install > /dev/null 2>> "${log_file}";
        [ ! -h "/usr/local/share/applications/org.gabmus.razercommander.desktop" ] && ln -s "/opt/razercommander/share/applications/org.gabmus.razercommander.desktop" "/usr/local/share/applications/org.gabmus.razercommander.desktop";
        [ ! -h "/usr/local/share/pixmaps/org.gabmus.razercommander.svg" ] && ln -s "/opt/razercommander/share/icons/hicolor/scalable/apps/org.gabmus.razercommander.svg" "/usr/local/share/pixmaps/org.gabmus.razercommander.svg";
        [ ! -h "/usr/local/bin/razercommander" ] && ln -s "/opt/razercommander/bin/razercommander" "/usr/local/bin/razercommander";
        errorCheck 1 "Erreur lors de l'installation.";
        cd ~;
        rm -fr "${temp_dir}";
}

main() {
        check_deps;
        install;
}

main;
 
exit 0;

Installer ou mettre à jour CPUFetch
CPUFetch est un petit programme permettant d'avoir rapidement des infos sur son processeur.

Fichier de configuration :

  • Type : BASH

  • Droits : root:staff, 0644

  • Emplacement par défaut : /usr/local/etc/update-cpufetch.conf

# Git download directory
git_dir="/tmp/cpufetch.XXXXXXXXXXXX"

# Github/Gitlab repository
git_repo="Dr-Noob/cpufetch"

# Installation directory
install_dir="/usr/local/bin/"

# Log file
log_file="/var/log/update-cpufetch.log"

Fichier éxécutable :

  • Type : BASH

  • Droits : root:staff, 0755

  • Emplacement par défaut : /usr/local/sbin/update-cpufetch

#! /usr/bin/env bash
 
################################################################################
#                                                                              #
# LICENCE                                                                      #
#                                                                              #
# This program is free software: you can redistribute it and/or modify it      #
# under the terms of the GNU General Public License as published by the Free   #
# Software Foundation, either version 3 of the License, or (at your option)    #
# any later version.                                                           #
#                                                                              #
# This program is distributed in the hope that it will be useful, but WITHOUT  #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or        #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for     #
# more details.                                                                #
#                                                                              #
# You should have received a copy of the GNU General Public License along with #
# this program.  If not, see <http://www.gnu.org/licenses/>.                   #
#                                                                              #
################################################################################
 
################################################################################
#                                                                              #
# DESCRIPTION                                                                  #
#                                                                              #
# Ce programme permet la mise à jour du programme CPUFetch, il se              #
# contente de récupérer la dernière version via git et de l'installer via      #
# compilation.                                                                 #
#                                                                              #
#                                                                              #
# VARIABLES                                                                    #
#                                                                              #
# - git_dir : Dossier où le contenu de la commande git sera stocké.            #
# - install_dir : Dossier où le logiciel sera installé.                        #
#                                                                              #
#                                                                              #
# FONCTIONS                                                                    #
#                                                                              #
# - install() : Utilise les commandes de compilation nécessaire à              #
#   l'installation du programme.                                               #
#                                                                              #
#                                                                              #
# AUTEUR(S)                                                                    #
#                                                                              #
# - Collyer Cédric <collyer.cedric@zergy.net>                                  #
#                                                                              #
#                                                                              #
# DERNIER(S) CHANGEMENT(S) :                                                   #
#                                                                              #
# - 06/03/2021 : Version 1.0                                                   #
#                                                                              #
################################################################################
 
# Variables
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin";
 
. "/usr/local/lib/messagesFunctions";
. "/usr/local/etc/update-cpufetch.conf";
 
install() {
        actionMessage "action" "Clonage du dépôt GIT...";
        temp_dir=$(mktemp -d "${git_dir}" 2>> "${log_file}") && git clone https://github.com/${git_repo} "${temp_dir}" > /dev/null 2>> "${log_file}";
        errorCheck 1 "Erreur lors du clonage GIT.";
        cd "${temp_dir}";
        actionMessage "action" "Compilation...";
        make -j $(nproc) > /dev/null 2>> "${log_file}"; 
        errorCheck 1 "Erreur lors de la compilation.";
        [ ! -d "${install_dir}" ] && mkdir -p "${install_dir}";
        [ -f "${install_dir}/cpufetch" ] && rm -f "${install_dir}/cpufetch";
        actionMessage "action" "Installation...";
        mv cpufetch "${install_dir}" > /dev/null 2>> "${log_file}";
        errorCheck 1 "Erreur lors de l'installation."
        cd ~;
        rm -fr "${temp_dir}";
}

main() {
        install;
}
 
main;
 
exit 0;

Mise à jour du système
Parce que je suis fainéant.
Attention, le script bloque si APT vous pose une question lors de la mise à jour d'un paquet (pour valider le changement d'un fichier de configuration par exemple)

Fichier de configuration :

  • Type : BASH

  • Droits : root:staff, 0644

  • Emplacement par défaut : /usr/local/etc/update-system.conf

# Lock files list
apt_lockfiles_list="/var/lib/apt/lock /var/lib/dpkg/lock /var/lib/apt/lists/lock /var/cache/apt/archives/lock"

# Acme.sh Binaries
acmesh_bin="/root/.acme.sh/acme.sh"

# Options for $APT_COMMAND.
apt_options="--quiet=2 --yes"

# Log file
log_file="/var/log/update-system.log"

Script de suppression des anciens Snaps :

  • Type : BASH

  • Droits : root:staff, 0755

  • Emplacement par défaut : /usr/local/sbin/remove-old-snaps

#! /usr/bin/env bash

# Removes old revisions of snaps
# CLOSE ALL SNAPS BEFORE RUNNING THIS
set -eu

LANG=en_US.UTF-8 snap list --all | awk '/disabled/{print $1, $3}' |
while read snapname revision; do
        snap remove "$snapname" --revision="$revision"
done

Fichier éxécutable :

  • Type : BASH

  • Droits : root:staff, 0755

  • Emplacement par défaut : /usr/local/sbin/update-system

#! /usr/bin/env bash

#################################################################################
#                                                                               #
# LICENCE :                                                                     #
#                                                                               #
# This program is free software: you can redistribute it and/or modify it under #
# the terms of the GNU General Public License as published by the Free Software #
# Foundation, either version 3 of the License, or (at your option) any later    #
# version.                                                                      #
#                                                                               #
# This program is distributed in the hope that it will be useful, but WITHOUT   #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.#
#                                                                               #
# You should have received a copy of the GNU General Public License along with  #
# this program.  If not, see <http://www.gnu.org/licenses/>.                    #
#                                                                               #
#################################################################################

#################################################################################
#                                                                               #
# DESCRIPTION                                                                   #
#                                                                               #
# Ce script est conçu pour mettre à jour automatiquement les distributions      #
# Debian ou Ubuntu.                                                             #
#                                                                               #
# Si vous avez l'habitude d'utiliser apt-get et Synaptic vous devriez changer   #
# les commandes par les commandes apt-get appropriés.                           #
#                                                                               #
#                                                                               #
# VARIABLES                                                                     #
#                                                                               #
# - apt_bin : Commande de mise à jour. Peut être "apt-get", ou "aptitude".      #
# - apt_options : Options pour la commande de mise à jour.                      #
# - lockfiles_list : List des fichiers lock à supprimer.                        #
# - RKHUNTER_SUPPORT : Support de RKHunter si installé, le met à jour et        #
#   vérifie les fichier.                                                        #
# - SNAPS_SUPPORT : Support des Snaps.                                          #
# - UPDATE_HWIDS : Met à jour les ID matériel (PCI et USB).                     #
#                                                                               #
#                                                                               #
# AUTEUR(S)                                                                     #
#                                                                               #
# - Collyer Cédric <collyer.cedric@zergy.net>                                   #
#                                                                               #
#                                                                               #
# DERNIER(S) CHANGEMENT(S)                                                      #
#                                                                               #
# - 02/08/2022 : Débogage                                                       #
# - 19/05/2022 : Réécriture de la fonction update_packages, support de d'autres #
#   formats que les DEB.                                                        #
# - 18/05/2022 : Ajout de la mises à jour des flatpak.                          #
# - 25/04/2020 : Ajout de la mises à jour des snaps.                            #
# - 30/10/2016 : Ajout du choix de la commande de mise à jour.                  #
# - 08/05/2016 : Réécriture complète de script.                                 #
#                                                                               #
#################################################################################

# Variables
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin";

. "/usr/local/lib/messagesFunctions";
. "/usr/local/etc/update-system.conf";

# Mise à jour des paquets
update_packages() {
        echo -e "\n${emy}Mise à jour du système${res}";
        echo -e "Paquets";
        distro=$(lsb_release -i | awk '{ print $3 }');
        case $distro in
                "CentOS" | "Fedora" | "RedHatEnterpriseServer" | "Scientific")
                        dnf_bin=$(which dnf);
                        actionMessage "action" "Mise à jour...";
                        ${dnf_bin} --assumeyes --quiet update > /dev/null 2> "${log_file}";
                        errorCheck 1 "Erreur lors de la mise à jour des paquets.";
                        ;;
                "Debian" | "Linuxmint" | "Raspbian" | "Ubuntu")
                        apt_bin=$(which apt);
                        for apt_lockfile in ${apt_lockfiles_list}; do
                                if [ -e "${apt_lockfile}" ]; then
                                        rm -f "${apt_lockfile}";
                                fi
                        done
                        actionMessage "action" "Vérification...";
                        ${apt_bin} update --quiet=2 --yes > /dev/null 2> "${log_file}";
                        errorCheck 1 "Erreur lors de la vérification des paquets à mettre à jours.";
                        actionMessage "action" "Mise à jour...";
                        ${apt_bin} full-upgrade --quiet=2 --yes > /dev/null 2>> "${log_file}";
                        errorCheck 1 "Erreur lors de la mise à jour des paquets.";
                        actionMessage "action" "Suppression des obsolètes...";
                        ${apt_bin} autopurge --quiet=2 --yes > /dev/null 2>> "${log_file}";
                        errorCheck 1 "Erreur lors du nettoyage des paquets obsolètes.";
                        ${apt_bin} clean --quiet=2 --yes > /dev/null 2>> "${log_file}";
                        for apt_lockfile in ${apt_lockfiles_list}; do
                                if [ -e "${apt_lockfile}" ]; then
                                        rm -f "${apt_lockfile}";
                                fi
                        done
                        ;;
                "openSUSE")
                        zypper_bin=$(which zypper);
                        actionMessage "action" "Mise à jour...";
                        ${zypper_bin} --non-interactive --quiet update > /dev/null 2> "${log_file}" && ${zypper_bin} --non-interactive --quiet dup > /dev/null 2>> "${log_file}";
                        errorCheck 1 "Erreur lors de la mise à jour des paquets.";
                        ;;
                "VoidLinux")
                        xbpsinstall_bin=$(which xbps-install);
                        xbpsremove_bin=$(which xbps-remove);
                        actionMessage "action" "Mise à jour...";
                        ${xbpsinstall_bin} -Syu > /dev/null 2> "${log_file}";
                        errorCheck 1 "Erreur lors de la mise à jour des paquets.";
                        ${xbpsremove_bin} -yO > /dev/null 2>> "${log_file}"
                        ;;
                *)
                        echo -e "Ce programme n'est compatible qu'avec les distributions suivantes :\n- CentOS\n- Fedora\n- RHEL\n- Scientific Linux\n- Debian\n- Raspbian\n- Linux Mint\n- Ubuntu\n- openSUSE\n- Linux Void" && exit 5;
        esac;
}

# Mise à jour des snaps
update_snaps() {
        pidof -q snapd && snapd_active="1" || snapd_active="0";
        if [ ${snapd_active} -eq "1" ]; then
                echo -e "\nSnaps";
                snap_bin=$(which snap);
                actionMessage "action" "Mise à jour...";
                ${snap_bin} refresh > /dev/null 2>> "${log_file}";
                errorCheck 1 "Erreur lors de la mise à jour des snaps.";
                if [ -x /usr/local/sbin/remove-old-snaps ]; then
                        actionMessage "action" "Suppression des obsolètes...";
                        /usr/local/sbin/remove-old-snaps > /dev/null 2>> "${log_file}";
                        errorCheck 1 "Erreur lors du nettoyage des snaps obsolètes.";
                fi
        fi
}

# Mise à jour des flatpaks
update_flatpaks() {
        flatpak_bin=$(which flatpak 2>> /dev/null);
        if [ -x "${flatpak_bin}" ]; then
                echo -e "\nFlatpaks";
                actionMessage "action" "Mise à jour...";
                ${flatpak_bin} --noninteractive update > /dev/null 2>> "${log_file}";
                errorCheck 1 "Erreur lors de la mise à jour des flatpaks.";
                actionMessage "action" "Suppression des obsolètes...";
                ${flatpak_bin} --noninteractive uninstall --unused > /dev/null 2>> "${log_file}";
                errorCheck 1 "Erreur lors de la suppression des flatpaks obsolètes.";
        fi
}

# Mise à jour de acme.sh
update_acmesh() {
        if [ -x ${acmesh_bin} ]; then
                echo -e "\nAcme.sh";
                actionMessage "action" "Mise à jour...";
                ${acmesh_bin} --upgrade > /dev/null 2>> "${log_file}";
                errorCheck 0 "Erreur lors de la mise à jour de Acme.sh";
        fi
}

# Mise à jour des hardware IDs
update_hwids() {
        updatepciids_bin=$(which update-pciids 2>> /dev/null);
        if [ -x ${updatepciids_bin} ]; then
                echo -e "\nID matériels";
                actionMessage "action" "PCI...";
                ${updatepciids_bin} -q 2>> "${log_file}";
                errorCheck 0 "Erreur lors de la mise à jour des ID PCI."; 
        fi
}

# Mise à jour de Rootkit Hunter
update_rkhunter() {
        rkhunter_bin=$(which rkhunter 2>> /dev/null);
        if [ -x ${rkhunter_bin} ]; then
                echo -e "\nRootkit Hunter";
                actionMessage "action" "Mise à jour..."
                ${rkhunter_bin} -q --update 2>> "${log_file}";
                errorCheck 0 "Erreur lors de la mise à jour de rkhunter.";
                actionMessage "action" "Calcul des MD5...";
                ${rkhunter_bin} -q --propupd 2>> "${log_file}";
                errorCheck 0 "Erreur lors de la mise à jour des sommes MD5 de rkhunter.";
        fi
}

main() {
        update_packages;
        update_snaps;
        update_flatpaks;
        update_acmesh;
        update_hwids;
        update_rkhunter;
}

main;

exit 0;

Élagage (triming) des SSD
Permet d'automatiser l'élagage (triming) de vos SSD, à ne pas utiliser sur les partitions hébergés par un HDD classque !

Fichier de configuration :

  • Type : BASH

  • Droits : root:staff, 0644

  • Emplacement par défaut : /usr/local/etc/trim.conf

# Partitions to trim.
partitions="/boot/efi / /usr" # Points de montage des partitions sur SSD, séparées par un espace.
     
# Log file.
log_file="/var/log/trim.log";

Fichier éxécutable :

  • Type : BASH

  • Droits : root:staff, 0755

  • Emplacement par défaut : /usr/local/sbin/trim

#! /usr/bin/env bash
 
################################################################################
#                                                                              #
# LICENCE                                                                      #
#                                                                              #
# This program is free software: you can redistribute it and/or modify it      #
# under the terms of the GNU General Public License as published by the Free   #
# Software Foundation, either version 3 of the License, or (at your option)    #
# any later version.                                                           #
#                                                                              #
# This program is distributed in the hope that it will be useful, but WITHOUT  #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or        #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for     #
# more details.                                                                #
#                                                                              #
# You should have received a copy of the GNU General Public License along with #
# this program.  If not, see <http://www.gnu.org/licenses/>.                   #
#                                                                              #
################################################################################
 
################################################################################
#                                                                              #
# DESCRIPTION                                                                  #
#                                                                              #
# Ce script permet d'élaguer (trim) les partition utilisant un SSD.            #
#                                                                              #
#                                                                              #
# VARIABLES                                                                    #
#                                                                              #
# - partitions : Liste des partition à élaguer, ne mettre que celles utilisant #
#   un SSD !                                                                   #
# - log_file : Fichier utilisé pour la journalisation.                         #
# - log_file_date : Date de journalisation.                                    #
#                                                                              #
#                                                                              #
# FONCTIONS                                                                    #
#                                                                              #
# - logDate() : Ajoute la date aux messages de journalisation.                 #
# - createLog() : Créer un fichier de journalisation et lui donne les droits   #
#   corrects s'il n'existe pas.                                                #
# - trim() : Lance la fonction fstrim sur les points de montages listé via une #
#   boucle "for".                                                              #
#                                                                              #
#                                                                              #
# AUTEUR(S)                                                                    #
#                                                                              #
# - Collyer Cédric <collyer.cedric@zergy.net>                                  #
#                                                                              #
#                                                                              #
# DERNIER(S) CHANGEMENT(S) :                                                   #
#                                                                              #
# - 16/05/2020 : Création du script et écriture de la documentation.           #
#                                                                              #
################################################################################
 
# Variables
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin";
 
. "/usr/local/etc/trim.conf";
 
# Routine d'horodatage des logs
logDate() {
        log_file_date="$(date +'%d/%m/%Y %H:%M')";
}

# Mise en place des journaux.
createLog() {
        if [ ! -f "${log_file}" ]; then
                touch "${log_file}";
                chown root "${log_file}";
                chgrp adm "${log_file}";
                chmod 640 "${log_file}";
        fi
}

# Triming
trim() {
        logDate;
        echo "*** ${log_file_date} ***" >> "${log_file}"
        for partition in ${partitions}; do
                fstrim -v ${partition} >> "${log_file}";
        done
}

main() {
        createLog;
        trim;
}
 
main;
 
exit 0;

Fichier cron :

  • Type : BASH

  • Droits : root:root, 0755

  • Emplacement par défaut : /etc/cron.weekly/trim

#!/bin/sh

test -x /usr/local/sbin/trim || exit 0
/usr/local/sbin/trim

Dernière modification par Zergy (Le 06/11/2022, à 03:12)

Hors ligne

#2091 Le 08/08/2022, à 20:27

Watael

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

salut,

function et () sont redondants.
les accolades sont inutiles si il n'y a rien d'accolé Développement de paramètres.
les chemins n'ont pas à être entre guillemets.
si une variables contient plusieurs éléments, autant utiliser un tableau.
si tu sais pas où est bash, il y a des chances que env ne le sache pas non plus. et qui te dit que env sera aussi bien sous /usr/bin/. le shell étant l'un des premiers programmes utilisé, il doit être accessible rapidement, il sera donc toujours accessible sous /bin.
les noms de variables tout en majuscules sont réservés aux variables systèmes. Pour éviter les téléscopages, les variables utilisateurs peuvent être panachées : nomVarPanachE?
les fonctions main sont peu utiles en shell, encore plus quand elles n'appellent qu'une seule autre fonction, qui elle-même pourrait ne pas être dans une fonction, mais être le corps du script.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#2092 Le 08/08/2022, à 20:35

Zergy

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Watael a écrit :

salut,

function et () sont redondants.
les accolades sont inutiles si il n'y a rien d'accolé Développement de paramètres.
les chemins n'ont pas à être entre guillemets.
si une variables contient plusieurs éléments, autant utiliser un tableau.
si tu sais pas où est bash, il y a des chances que env ne le sache pas non plus. et qui te dit que env sera aussi bien sous /usr/bin/. le shell étant l'un des premiers programmes utilisé, il doit être accessible rapidement, il sera donc toujours accessible sous /bin.
les noms de variables tout en majuscules sont réservés aux variables systèmes. Pour éviter les téléscopages, les variables utilisateurs peuvent être panachées : nomVarPanachE?
les fonctions main sont peu utiles en shell, encore plus quand elles n'appellent qu'une seule autre fonction, qui elle-même pourrait ne pas être dans une fonction, mais être le corps du script.

  • C'est pas une différence entre bash et dash ? Faudrait que je retest.

  • Pas compris. neutral

  • Je trouve ça plus propre.

  • Jamais utilisé.

  • Depuis quelques années, /bin et /sbin sont des liens symboliques vers /usr/bin et /usr/sbin, et ceux dans plusieurs distributions.

  • J'ai toujours vu les variables en majuscules, c'est peut-être une mauvaise habitude qui est resté.

  • Rhoo, ça se voit tant que ça que j'ai fait du Java par le passé ?

Hors ligne

#2093 Le 08/08/2022, à 21:13

Watael

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

1/ pas de différences entre (da)sh et bash
2/ accolades inutiles : $1, $var
accolades indispensables : ${10}, ${var}autreChose
3/ ça ne l'est pas.
4/ essaie smile
5/ ça ne change rien
6/ il n'est jamais trop tard
7/ smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#2094 Le 08/08/2022, à 21:30

Zergy

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Watael a écrit :

1/ pas de différences entre (da)sh et bash
2/ accolades inutiles : $1, $var
accolades indispensables : ${10}, ${var}autreChose
3/ ça ne l'est pas.
4/ essaie smile
5/ ça ne change rien
6/ il n'est jamais trop tard
7/ smile

1/ Je ne sais vraiment plus d'où m'est venu cette habitude, sans doute d'une vieille version de bash, genre d'il y a 15 ans ?
2/ Je verrais, mon côté égalitariste aura tendance à toute les mettre entre accolades ou aucune. tongue Je pense que ça permet d'isoler la variable d'un texte à laquelle elle est accolé, par très grave cependant.
3/ Je pense que tu veux dire qu'il n'est pas nécessaire de mettre "$variable", mais que variable="variable avec des espaces" est permit.
Par contre, après test :

$ var="Dossier avec des espaces"
$ ls $var # ou ls ${var}
ls: impossible d'accéder à 'Dossier': Aucun fichier ou dossier de ce type
ls: impossible d'accéder à 'avec': Aucun fichier ou dossier de ce type
ls: impossible d'accéder à 'des': Aucun fichier ou dossier de ce type
ls: impossible d'accéder à 'espaces': Aucun fichier ou dossier de ce type
$ ls "$var" # ou ls "${var}"
>>> Contenu du dossier correctement listé.

4/ OK, mais je me demande si ça ne complexifie pas vu mes cas d'utilisation, je jetterais un œil.
5/ Du coup : "#! env bash" ?
6/ OK, je metterai ça à jour.

Dernière modification par Zergy (Le 08/08/2022, à 21:59)

Hors ligne

#2095 Le 02/03/2023, à 21:53

Jarodd

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour,
Je voudrais partager quelques scripts, ils sont sur gitlab, en projets privés car j'ai des variables persos dedans. Comment faire pour les partager sans ces éléments ?


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#2096 Le 27/04/2023, à 15:15

Jarodd

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour,
Pour le boulot j'essaye de me bidouiller un script.
Quand on a un souci applicatif, les admins nous balancent des scripts dans tous les sens, sur plusieurs environnements. Je me retrouve souvent avec 100+ fichiers à analyser.
Je fais donc un tri manuel, en fonction de leur utilité : je les classe par dossier. Mais j'ai toujours plusieurs fichiers par répertoire, je les concatène donc par "thème" avec la commande :

cat repertoireA/* > repertoireA.log
cat repertoireB/* > repertoireB.log

Puis j'analyse chaque fichier.
Je voudrais automatiser cette dernière étape (pour l'instant je gère encore le tri par répertoire manuellement). Voici mon script :

#!/bin/bash

dirs="$(ls -Ad */)" # analyze only directories, not files or "."
for dir in ${dirs}
do
    dir=$(echo "$dir" | sed 's:/*$::') # remove last "/" character
    echo "Traitement du répertoire "${dir}

    cat "${dir}/* >  ${dir}.log"
done

Seulement j'obtiens une erreur :

cat 'repertoireA/* > repertoireA.log' : Aucun fichier ou dossier de ce type

Je ne comprends pas cette erreur, ni ce que je dois corriger.
Merci pour votre aide.


Ubuntu 22.04.3 LTS (64 bits)

Hors ligne

#2097 Le 27/04/2023, à 15:18

Hizoka

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Salut Jarodd, crée un nouveau topic pour ton problème

et tout est dans le message d'erreur pour le coup...
tu lui demande d'afficher avec cat le fichier 'repertoireA/* > repertoireA.log'.
Je présume que tu veux :

cat "${dir}"/* >  "${dir}.log"

Dernière modification par Hizoka (Le 27/04/2023, à 15:20)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne