Archives par mot-clé : Script Bash

Ansible – script d’inventaire

Ansible – script d’inventaire

Ansible

Petit script qui permet de générer un fichier d’inventaire pour Ansible avec nmap.

#!/bin/bash

# Vérifier si nmap est installé
if ! command -v nmap &> /dev/null
then
    echo "Erreur : nmap n'est pas installé. Veuillez installer nmap avant de continuer."
    exit 1
fi

# Vérifier si l'utilisateur a passé un réseau en argument
if [ -z "$1" ]; then
    echo "Usage: $0 <network>"
    echo "Exemple: $0 192.168.1.0/24"
    exit 1
fi

# Prendre le réseau passé en argument
NETWORK=$1

# Vérifier si le script est exécuté avec des privilèges root
if [ "$EUID" -ne 0 ]; then
    echo "Avertissement : Les privilèges root sont requis pour détecter l'OS. Le script continuera sans détection d'OS."
    # Effectuer un simple scan sans détection d'OS
    nmap -sn "$NETWORK" -oG basic_scan.txt
    SCAN_FILE="basic_scan.txt"
else
    # Scan du réseau avec détection d'OS
    echo "Scanning le réseau $NETWORK pour détecter les OS..."
    nmap -O "$NETWORK" -oG os_scan.txt
    SCAN_FILE="os_scan.txt"
fi

# Fichiers d'inventaire INI
INVENTORY_FILE="inventory_by_os.ini"

# Créer des groupes pour les OS courants dans le fichier d'inventaire
echo "[linux]" > $INVENTORY_FILE
echo "[windows]" >> $INVENTORY_FILE
echo "[mac_os]" >> $INVENTORY_FILE
echo "[unknown_os]" >> $INVENTORY_FILE

# Lire le fichier de scan et trier les hôtes par OS
while read -r line; do
    ip=$(echo "$line" | awk '{print $2}')
    
    if [ "$EUID" -eq 0 ]; then
        # Si l'utilisateur est root, essayer de détecter l'OS
        if echo "$line" | grep -q "Linux"; then
            # Ajouter les hôtes Linux
            echo "$ip ansible_user=your_user ansible_ssh_private_key_file=~/.ssh/id_rsa" >> $INVENTORY_FILE
        elif echo "$line" | grep -q "Windows"; then
            # Ajouter les hôtes Windows
            echo "$ip ansible_user=your_user ansible_password=your_password" >> $INVENTORY_FILE
        elif echo "$line" | grep -q "Darwin" || echo "$line" | grep -q "Mac OS"; then
            # Ajouter les hôtes macOS (Darwin est le noyau de macOS)
            echo "$ip ansible_user=your_user ansible_ssh_private_key_file=~/.ssh/id_rsa" >> $INVENTORY_FILE
        elif echo "$line" | grep -q "Running:"; then
            # Si l'OS n'est pas Linux, Windows ou macOS, le classer dans "unknown_os"
            echo "$ip" >> $INVENTORY_FILE
        fi
    else
        # Si l'utilisateur n'est pas root, tous les hôtes vont dans "unknown_os"
        if echo "$line" | grep -q "Host: "; then
            echo "$ip" >> $INVENTORY_FILE
        fi
    fi
done < $SCAN_FILE

# Afficher le résultat
echo "Inventaire généré : $INVENTORY_FILE"
cat $INVENTORY_FILE

Explications du script :

  • Vérification des privilèges root : Le script vérifie si le script est exécuté avec les privilèges root en vérifiant la variable $EUID. Si l’UID est différent de 0, cela signifie que l’utilisateur n’a pas les privilèges nécessaires.
  • Avertissement : Si le script est exécuté sans privilèges root, un message d’avertissement est affiché pour informer l’utilisateur que la détection d’OS ne sera pas effectuée.
  • Continuation sans détection d’OS : Si les privilèges root sont absents, le script fait un scan simple sans détection d’OS (nmap -sn), et tous les hôtes sont regroupés sous le groupe [unknown_os].
  • Utilisation de fichiers de scan différents :
    • Si root est disponible : le fichier os_scan.txt est utilisé (avec détection d’OS).
    • Si root est absent : le fichier basic_scan.txt est utilisé (sans détection d’OS).
  • Gestion des hôtes :
    • Si les privilèges root sont présents, le script tente de détecter l’OS et de classer les hôtes dans les groupes correspondants ([linux], [windows], [mac_os]).
    • Sans root, tous les hôtes sont ajoutés à [unknown_os].

Rendez le script exécutable :

chmod +x generate_inventory_by_os.sh

Exécutez le script avec le réseau cible en argument :

./generate_inventory_by_os.sh 192.168.1.0/24

Comportement du script :

  • Avec privilèges root : Le script détecte les OS et génère un inventaire avec les groupes [linux], [windows], [mac_os], et [unknown_os].
  • Sans privilèges root : Le script affiche un avertissement, ne tente pas de détecter l’OS, et classe tous les hôtes sous [unknown_os].

Exemple de fichier d’inventaire généré sans privilèges root :

[linux]

[windows]

[mac_os]

[unknown_os]
192.168.1.10
192.168.1.15
192.168.1.20

Exemple de fichier d’inventaire généré avec privilèges root :

[linux]
192.168.1.10 ansible_user=your_user ansible_ssh_private_key_file=~/.ssh/id_rsa

[windows]
192.168.1.20 ansible_user=your_user ansible_password=your_password

[mac_os]
192.168.1.25 ansible_user=your_user ansible_ssh_private_key_file=~/.ssh/id_rsa

[unknown_os]
192.168.1.30

 

 

 

 

Time Machine script de nettoyage pour MacBook

Time Machine script de nettoyage pour MacBook

Faire le ménage dans vos sauvegardes Time Machine pour macOS et vos ordinateurs Macbook and Co. Il Supprime toutes les sauvegardes de plus de X mois (à configurer). Je vous propose un script à modifier en conséquence pour coller a votre besoin.

Voici ce petit script pour supprimer les sauvegardes Time Machine sous MacBook

Time Machine

 

#!/bin/bash

# Définir la durée en mois
DUREE=3

# Calculer la date limite (3 mois avant aujourd'hui)
DATE_LIMITE=$(date -v-"$DUREE"m +"%Y-%m-%d")

# Obtenir le point de montage depuis la commande tmutil destinationinfo
POINT_DE_MONTAGE=$(tmutil destinationinfo | grep 'Mount Point' | awk -F': ' '{print $2}')

# Obtenir la liste des sauvegardes
BACKUPS=$(tmutil listbackups)

# Vérifier et supprimer les sauvegardes plus anciennes que la date limite
for BACKUP in $BACKUPS; do
    # Extraire la date de sauvegarde à partir du chemin de sauvegarde
    DATE_BACKUP=$(basename "$BACKUP" | awk -F'-' '{print $1 "-" $2 "-" $3}')

    # Comparer les dates
    if [[ "$DATE_BACKUP" < "$DATE_LIMITE" ]]; then
        # Extraire le timestamp de la sauvegarde
        TIMESTAMP=$(basename "$BACKUP" | awk -F'.backup' '{print $1}')
       
        echo "Suppression de la sauvegarde: $BACKUP"
        sudo tmutil delete -d "$POINT_DE_MONTAGE" -t "$TIMESTAMP"
    fi
done

echo "Toutes les sauvegardes plus anciennes que $DUREE mois ont été supprimées."

Ne pas oublier de rendre le script exécutable avec :

chmod +x delete_old_backups.sh

N’hésitez pas à me donner vos impressions dans les commentaires.

 

Proxmox – You do not have valid subscription

Proxmox – You do not have valid subscription

Proxmox est une plateforme de virtualisation open source qui offre une solution intégrée pour la virtualisation de serveurs et la gestion de conteneurs. Elle combine la virtualisation basée sur des machines virtuelles (VM) avec la virtualisation basée sur des conteneurs pour permettre aux utilisateurs de créer et de gérer des environnements isolés et efficaces.

L’une des caractéristiques distinctives de Proxmox est son interface web conviviale, mais lorsqu’on ne possède pas la version entreprise, le message de type popup peux être gênant.


logo Proxmox

Introduction

L’un des avantages de la personnalisation de votre environnement Proxmox est la possibilité de modifier le comportement de certaines fonctionnalités. Dans cet article, nous allons vous guider à travers le processus de remplacement d’une ligne dans un fichier JavaScript Proxmox afin de supprimer le message : You do not have valid subscription

Proxmox - You do not have valid subscription

Le processus en quelques étapes

Identifier le fichier cible :

Tout d’abord, localisez le fichier JavaScript que vous souhaitez modifier. Dans cet exemple, nous allons travailler avec le fichier « /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js ».

Préparation

Avant de commencer, assurez-vous d’avoir une sauvegarde du fichier original pour éviter toute perte de données en cas d’erreur. La sécurité est primordiale lors de la modification de fichiers système.

Écrire le script Bash

Créez un script Bash pour automatiser le processus de remplacement. Le script utilisera la commande sed pour effectuer le remplacement de la ligne spécifiée dans le fichier JavaScript, tout en créant une sauvegarde du fichier avec l’extension .bak

#!/bin/bash

# Chemin vers le fichier
chemin_fichier="/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js"

# Créer une copie de sauvegarde avec l'extension .bak
cp "$chemin_fichier" "$chemin_fichier".bak

# Ligne à rechercher
ligne_recherche=".data.status.toLowerCase() !== 'active') {"

# Nouvelle ligne à insérer
nouvelle_ligne=".data.status.toLowerCase() !== 'active') { orig_cmd(); } else if ( false ) {"

# Remplacement de la ligne
sed -i "s/$ligne_recherche/$nouvelle_ligne/" "$chemin_fichier"

# Restart PVE Web
systemctl restart pveproxy.service
# Restart PBS Web si besoin
# systemctl restart proxmox-backup-proxy.service

echo "Remplacement effectué."
echo "Une copie de sauvegarde a été créée :"
echo " /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak"

Exécution du script

Donnez au script les permissions d’exécution en utilisant chmod +x script_nom.sh, puis exécutez-le en tapant ./script_nom.sh. Vérifiez le fichier JavaScript après exécution pour confirmer le remplacement de ligne.

Conclusion : Proxmox – You do not have valid subscription

En suivant ces étapes simples, vous pourrez ajuster le comportement de votre environnement Proxmox en remplaçant des lignes spécifiques dans des fichiers JavaScript.

Assurez-vous toujours d’agir avec prudence et de conserver des sauvegardes pour éviter toute perte de données non intentionnelle.

 

Lien de l’éditeur : https://www.proxmox.com/en/