blog
Table des matières
3 billet(s) pour janvier 2026
| Notes rsh rcp | 2026/01/21 18:08 | Jean-Baptiste |
| Git - Duplication d'un dépôt | 2026/01/19 10:22 | Jean-Baptiste |
| Exemple simple de conf Nagios | 2026/01/14 10:07 | Jean-Baptiste |
Script shell interactif avec boîtes de dialogue (dialog boxes) - Whiptail
Voir :
Voir aussi :
- dialog
Whiptail est inclus par défaut dans Debian
Exemple de script
dialogBoxes.sh
#! /bin/bash set -o nounset WHIPTAIL='env LANG=C whiptail' #exec 2> /tmp/dlg-log-"$(date +%Y%m%d%H%M)".err menu1() { $WHIPTAIL --title "NODE" --menu "Choose a hostname" 25 78 16 \ srv-1 "" \ srv-2 "" \ MAIN_MENU "" \ 2>/tmp/dlg-choix } menu2() { $WHIPTAIL --title "APP ON/OFF" --menu "On / Off" 25 78 16 \ 1_App_On "" \ 2_App_Off "" \ MAIN_MENU "" \ 2>/tmp/dlg-choix } main_menu() { $WHIPTAIL --title "MAIN MENU" --menu "Select an option" 25 78 16 \ 1_Node "" \ 2_App_Activation "" \ 2>/tmp/dlg-choix } sortir() { rm -f /tmp/dlg-choix echo -e "\\n\\tBye !" exit 0 } test_menu_option() { CHOIX=$(cat /tmp/dlg-choix) rm -f /tmp/dlg-choix case $CHOIX in 1_Node) menu1 ;; 2_App_Activation) menu2 ;; 1_App_On) echo "App_On ${HOST_SRV:-x}" sortir ;; 2_App_Off) echo "App_Off ${HOST_SRV:-x}" sortir ;; MAIN_MENU) main_menu ;; srv-1) HOST_SRV=1 menu2 ;; srv-2) HOST_SRV=2 menu2 ;; "") echo "Cancelled by user" sortir ;; *) echo -e "Option unknown : \"${CHOIX}\"" exit 2 ;; esac } main_menu while true do test_menu_option done
Dialog
Exemples
(pv -n image.iso | dd of=/dev/sdb bs=1M && sync) 2>&1 | dialog --gauge "la commande dd est en cours d'exécution, merci de patienter..." 10 70 0
Script shell commande timeout
Voir aussi :
A titre d'exemple. Idéalement il faut gérer le timeout avec Ansible
Exemple de code Ansible
- name: command ldap_search become: true ansible.builtin.command: | /usr/bin/timeout --kill-after=15 10 /usr/bin/ldapsearch -LLL -D cn={{ lookup('env', 'LDAP_USER') }} -b o=unixauth -y /root/.ansible/tmp-files/.ldap.txt uid={{ CDO_ACCOUNT_USER | quote }} dn changed_when: false check_mode: false register: ldapsearch environment: LANG: C failed_when: - ldapsearch.rc != 0 # OK - ldapsearch.rc != 124 # Timeout. SIGTERM - ldapsearch.rc != 137 # Timeout. SIGKILL - name: fail when timeout - SIGTERM fail: msg: "Error_Command_Timeout. Process arrêté par SIGTERM." when: ldapsearch.rc == 124 - name: fail when timeout - SIGKILL fail: msg: "Error_Command_Timeout. Process arrêté par SIGKILL." when: ldapsearch.rc == 137 - name: fail if ACME user fail: msg: | Error_ElementAlreadyUsed. Nom de compte utilisateur déjà utilisé par ACME {{ CDO_ACCOUNT_USER }}. when: - ldapsearch.stdout_lines |select('regex', '^dn:') |list is regex(',o=unixauth') - not allow_ldap_acme
Concernant Ansible voir aussi https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_async.html
async pool timeout
play1.yml
#!/usr/bin/ansible-playbook --- - name: test hosts: localhost gather_facts: false # TIMEOUT_MAX = async # when poll != 0 # TIMEOUT_MAX = retries x delay # when poll == 0 tasks: - name: Command shell: | sleep 5 date >> /tmp/date.log poll: 0 # When pool is a positive value, the playbook will still block on the task until it either completes, fails or timeout async: 2 # if poll != 0 : fail when task is longer than async value register: cmd_sleep - name: DEBUG 10 debug: msg: "Command en cours d'execution" - name: Async_status async_status: jid: "{{ cmd_sleep.ansible_job_id }}" register: job_result until: job_result.finished retries: 3 # MAX TIMEOUT VAR delay: 2 # MAX TIMEOUT VAR - name: DEBUG 20 debug: msg: "Execution terminée"
TODO Pourquoi le Logiciel Libre
Richard Stallman, Créative Commun, Partage, License, Copyleft, GNU, GPL
Voir :
Git facile
Voir http://lilobase.wordpress.com/2014/05/12/a-la-decouverte-de-git/
PC Dépôt
mkdir test.git cd test.git mkdir test.git
PC1
echo "test1" > test1.txt echo "test1" > test.txt
PC2
echo "test2" > test2.txt echo "test2" > test.txt
PC3
echo "test3" > test3.txt echo "test3" > test.txt
PC1, PC2, PC3
git init git add . git commit -m "1ere initialisation"
PC1
git push -u git@koala:test.git master
PC2, PC3
git pull git@koala:test.git # Pour chaque conflit : modifier fichier en question git add fichier_conflict git commit git push -u git@koala:test.git master
PC1, PC2, PC3
git add . git commit git pull git@koala:test.git git add . git commit git push -u git@koala:test.git master
###########
Merge koala:test
Conflicts:
test.txt
#
Noyau Linux Debian
Voir aussi :
Méthode I
cat >> /etc/apt/sources.list <<EOF deb http://linux-libre.fsfla.org/pub/linux-libre/freesh freesh main EOF
# apt-get update && apt-get install linux-libre64 linux-libre64-headers 259 ko réceptionnés en 5s (49,8 ko/s) Lecture des listes de paquets... Fait W: Erreur de GPG : http://linux-libre.fsfla.org freesh InRelease : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 6FCB32C947486962
$ #gpg --keyserver pgpkeys.mit.edu --recv-key 6FCB32C947486962 $ gpg --keyserver pool.sks-keyservers.net --recv-key 6FCB32C947486962 gpg: le porte-clefs « /root/.gnupg/secring.gpg » a été créé gpg: demande de la clef 47486962 sur le serveur hkp pgpkeys.mit.edu gpg: clef 47486962 : clef publique « Jason Self <jself@gnu.org> » importée gpg: aucune clef de confiance ultime n'a été trouvée gpg: Quantité totale traitée : 1 gpg: importées : 1
$ gpg -a --export 6FCB32C947486962 | sudo apt-key add - OK
Autre
Connaitre la version du noyau à partir des sources
make kernelversion
blog.txt · Dernière modification : de 127.0.0.1
