<![CDATA[Forum Ubuntu-fr.org / [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?id=204074 Thu, 27 Apr 2023 14:18:01 +0000 FluxBB <![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22672509#p22672509 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"
]]>
Thu, 27 Apr 2023 14:18:01 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22672509#p22672509
<![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22672505#p22672505 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.

]]>
Thu, 27 Apr 2023 14:15:23 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22672505#p22672505
<![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22655431#p22655431 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 ?

]]>
Thu, 02 Mar 2023 20:53:22 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22655431#p22655431
<![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22584569#p22584569 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.

]]>
Mon, 08 Aug 2022 20:30:04 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22584569#p22584569
<![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22584562#p22584562 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

]]>
Mon, 08 Aug 2022 20:13:44 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22584562#p22584562
<![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22584555#p22584555 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é ?

]]>
Mon, 08 Aug 2022 19:35:40 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22584555#p22584555
<![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22584552#p22584552 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.

]]>
Mon, 08 Aug 2022 19:27:35 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22584552#p22584552
<![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22584547#p22584547 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
]]>
Mon, 08 Aug 2022 18:59:23 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22584547#p22584547
<![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22505688#p22505688 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

]]>
Mon, 15 Nov 2021 21:42:10 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22505688#p22505688
<![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22505685#p22505685 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 ?

]]>
Mon, 15 Nov 2021 21:30:17 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22505685#p22505685
<![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22505681#p22505681 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!

]]>
Mon, 15 Nov 2021 21:24:20 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22505681#p22505681
<![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22505524#p22505524 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.

]]>
Mon, 15 Nov 2021 15:52:21 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22505524#p22505524
<![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22505412#p22505412 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

]]>
Mon, 15 Nov 2021 10:57:06 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22505412#p22505412
<![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22505407#p22505407 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...

]]>
Mon, 15 Nov 2021 10:45:46 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22505407#p22505407
<![CDATA[Réponse à : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=22505400#p22505400 Il faudrait faire des forks là, qu'est-ce que c'est que ce sujet fourre-tout?

]]>
Mon, 15 Nov 2021 10:17:36 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=22505400#p22505400