L'administration informatique quotidienne exige fréquemment l'exécution rapide de séquences complexes. Cette compilation vise à centraliser des techniques éprouvées pour diagnostiquer, manipuler et sécuriser les environnements serveur sous Unix et Linux.
Gestion Avancée des Fichiers
Sauvegarde Sélective
Au lieu de compter uniquement sur xargs, il est possible d'utiliser une boucle de lecture pour mieux gérer les noms de fichiers contenant des espaces lors de la copie de sauvegarde.
find /var/lib/service/data -type f -name "*.cfg" | while IFS= read -r fichier; do
cp "$fichier" "${fichier}.backup"
done
Édition de Fichiers en Masse
Pour supprimer la dernière ligne de plusieurs fichiers trouvés :
find /home/user/projects -name "script.sh" | xargs -I {} sed -i "$ d" {}
Pour injecter le contenu d'un script externe dans chaque fichier cible :
find . -name "config.json" -exec sh -c 'cat /scripts/init.txt >> "$1"' _ {} \;
Compression avec Exclusions
L'utilisation des options longues améliore la lisibilité tout en excluant certains schémas de fichiers.
tar --create --gzip --verbose --exclude='archive_old*' -f archives/data_final.tar.gz ./data_folder
Traitement de Texte avec Sed et Awk
Inversion et Insertion de Lignes
L'outil sed permet d'insérer du texte avant ou après une correspondance spécifique sans modifier le fichier manuellement.
# Insérer une ligne après la correspondance
sed '/pattern_de_recherche/a LigneAjoutee' fichier_source.txt
# Insérer une ligne avant la correspondance
sed '/pattern_de_recherche/i LignePrecedente' fichier_source.txt
Commentaire Actif et Passif
Voici comment transformer visuellement un bloc de configuration dans un fichier de log ou de config.
# Activer le commentaire devant les lignes initiant par "config"
sed 's/^config/#config/' parameters.txt
# Décommenter les lignes débutant par "#active"
sed 's/^#\(active\)/\1/' parameters.txt
Analyse Statistique avec Awk
Pour sommer une colonne numérique spécifique d'un fichier de données :
awk '{total += $3} END {print "Somme totale:", total}' donnees.csv
Exemple d'exécution parallèle : exécuter une pause pendant le traitement de chaque entrée.
awk '{print $2}; sleep 0.5' liste_taches.txt
Réseau et Surveillance
Vérification de Connectivité
Utilisation de nc (Netcat) pour tester rapidement la réceptivité d'une machine distante sur un port spécifique.
# Mode TCP Verbose
nc -zv 192.168.1.50 22
# Mode UDP Test
nc -vu 192.168.1.50 53
Analyse des Connexions Actives
Ces agrégations permettent d'identifier les pics de charge ou les abus potentiels sur les interfaces réseaux.
# Compter l'état des connexions TCP
netstat -an | grep ESTABLISHED | wc -l
# Top des adresses IP connectées au port web
netstat -anp | grep ":80 " | awk '{print $5}' | cut -d':' -f1 | sort | uniq -c | sort -rn | head -20
Monitoring HTTP et Latence
Un script utilisant curl peut extraire les métriques de performance détaillées d'une URL cible.
curl -o /dev/null -s -w "Status: %{http_code}, Temps Total: %{time_total}s\n" https://exemple.com/sante
Pour une surveillance continue de la latence ICMP :
#!/bin/bash
GOAL_IP="10.0.0.5"
LOG_FILE="/var/log/monitoring.log"
while true; do
echo "$(date '+%F %T') - $(ping -c 1 -W 1 $GOAL_IP | grep rtt | awk '{print $5} ms')" >> $LOG_FILE
sleep 5
done
Traçabilité DNS et Adresse IP
Récupération rapide de l'adressse IP locale via les services publics ou les outils CLI standards.
curl ifconfig.me/ip
Conteneurisation et Virtualisation
Gestion Dynamique Docker
Lister les processus internes des conteneurs en cours d'exécution.
docker ps -q | xargs -n1 docker top
Lancer un conteneur éphémère avec un point d'entrée personnalisé pour éviter l'exécution automatique du CMD par défaut.
docker run --rm --entrypoint "/bin/bash" my_image:tag -c "whoami"
Accès aux Logs Système
Sur les distributions modernes gérées par systemd, l'accès aux journaux de service se fait ainsi :
journalctl --follow --unit nom_du_service
Sécurité et Réseaux Avancés
Gestion du Pare-feu Iptables
Configuration basique pour rediriger le trafic local vers un port distant tout en autorisant les sessions établies.
# Autoriser l'état lié
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Redirection DNAT (Port Forwarding)
iptables -t nat -A PREROUTING -i eth0 --dport 8080 -j DNAT --to-destination 192.168.0.100:80
# Masquerade pour le NAT de sortie
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Nettoyer les règles existantes
iptables --flush
iptables -t nat --flush
Analyse de Paquets
Utilisation de tcpdump pour filtrer le trafic entrant et sortant selon des critères précis.
# Capturer le trafic HTTP brut sur l'interface principale
tcpdump -i eth0 port 80 -nn -A
# Filtrer deux hôtes spécifiques
tcpdump host 192.168.1.5 and host 192.168.1.10
Outils de Synchronisation et Versionnement
Rsync avec Exceptions
Synchroniser un répertoire tout en ignorant systématiquement les fichiers temporaires ou de configuration sensibles.
rsync -avz --progress --exclude '*.log' --exclude 'cache/*' /source/local user@serveur:/destination/remote
Si le SSH utilise un port non-standard :
rsync -avz -e "ssh -p 2222" /opt/data root@10.10.0.5:/backup/
Métadonnées Git
Extraire le hachage court et la date du dernier commit pour l'intégration continue (CI).
COMMIT_TAG=$(git rev-parse --short HEAD)
BUILD_DATE=$(git log -1 --date=short --pretty=format:%ad)
Suppression de Namespace Kubernetes Bloqué
Forcez la suppression d'un namespace qui reste bloqué dans l'état Terminating.
kubectl patch ns mon_namespace_en_cours -p '{"spec":{"finalizers":null}}'