Commandes admin avancées

Comprendre comment sont écrits les scripts

Voici l’extrait du script de configuration post installation que j’utilise sur la distribution CentOS 7. Nous allons le décortiquer pour comprendre à quoi correspondent ces hiéroglyphes…partitionmanager

#!/bin/bash
# 001_base.sh
# JP Antinoux - décembre 2014
FILE_R='invite_root'
RC_ROOT='/root/.bashrc'
CWD=$(pwd)
if [ $USER != "root" ] ;
  then
  echo "Pour exécuter ce script il faut être l'utilisateur root !"
else
 # Configuration de Vim
  echo "---------------------------"
  echo ":: Configuration de Vim. ::"
  echo "---------------------------"
  cat $CWD/../vim/vimrc > /etc/vimrc
 # Installation invite root
  echo "-----------------------------------------"
  echo ":: Coloration invite de commande root. ::"
  echo "-----------------------------------------"
  cat $CWD/../bash/$FILE_R > "$RC_ROOT"
 # Installation de quelques outils en ligne de commande
  echo "-----------------------------------------"
  echo ":: Installation outils de base. ::"
  echo "-----------------------------------------"
  TOOLS=$(egrep -v '(^\#)' $CWD/../bases_install/paquets-base)
  yum -y install $TOOLS
 # Lien symbolique de eZServerMonitor.sh vers diag -a
 echo "------------------------------"
 echo ":: Mise en place de diag -a ::"
 echo "------------------------------"
 mkdir /root/bin
 ln -s /root/centos/centos_70/eZServerMonitor.sh /root/bin/diag
 diag -a
---
  # Activer la coloration de l'invite root
  basch -c source $RC_ROOT
fi
exit 0

 Sommaire


applications-utilities

Le shebang : #!arrow-up-mini

Le shebang, représenté par #!, est un en-tête d’un fichier texte qui indique au système d’exploitation que ce fichier n’est pas un fichier binaire mais un script (ensemble de commandes) ; sur la même ligne est précisé l’interpréteur permettant d’exécuter ce script.

#!

Dans notre cas nous utilisons le shell bash (Bourne Again SHell). Son chemin dans le système est : /bin/bash. Nous écrivons donc :

#!/bin/bash

accessories-text-editor

Les commentaires

arrow-up-mini
A part sur la première ligne pour le shebang où le # a un sens précis, celui-ci introduit des commentaires qui ne seront pas interprétés par le script.

# 001_base.sh
# JP Antinoux - décembre 2014

applications-education

Déclarer des variables

arrow-up-mini

FILE_R='invite_root'
RC_ROOT='/root/.bashrc'
CWD=$(pwd)

Le nom de la variable est en début de ligne :

FILE_R=’invite_root’

FILE_R  : par convention celui-ci est écrit en majuscule pour une meilleure identification dans le script.

=’invite_root’  : à droite du caractère = le contenu de la variable –> ici il s’agit d’un nom de fichier « invite_root »

 

RC_ROOT=’/root/.bashrc’

La variable RC_ROOT contient le chemin d’accès au fichier caché .bashrc (ce fichier permet de régler les paramètres utilisateur de la console).

 

La variable CWD

CWD=$(pwd)

Pour que la valeur de la variable contienne la valeur d’un commande il faut faire précéder la commande de $ et entourer celle-ci de parenthèses et ne pas mettre d’espaces.

Faire le test en console en utilisant la commande « echo »

# echo CWD=$(pwd)

Faire maintenant un essai avec une variable système

echo $USER

Le code retour d’une commande

echo $?

edit-redo

Les boucles conditionnelles simples

arrow-up-mini

if <test>
  then
  <commande...>
  else
  <commande2...>
fi

digikam

Rechercher dans les fichiers

arrow-up-mini
Pouvoir isoler rapidement un élément dans un fichier de configuration, dans la sortie d’une commande ou dans un fichier texte quelconque est un atout essentiel sur un système GNU-Linux pour lequel “tout est fichier” (citation de Kenneth Thompson, père du système UNIX). C’est ce que proposent les commandes grep et egrep.

 

grep et egrep

TOOLS=$(egrep -v '(^\#)' $CWD/../bases_install/paquets-base)
TOOLS             nom de la variable
$(           )    contenu de la variable entre parenthèses
egrep             recherche les lignes qui contiennent les instructions qui suivent
-v                chercher les lignes qui n'incluent PAS le motif de recherche 
^\#               chercher une ligne commençant par # 
$CWD              Chemin depuis la racine dans le répertoire où se trouve le script
../               On remonte d'un cran dans la hiérarchie des répertoires
bases_install/    On rentre dans le répertoire de destination
paquets-base      Le fichier à traiter

Au final on retrouve dans la variable la liste des noms de programmes à installer

yum -y install $TOOLS

Cette commande permet d’installer sans demander confirmation la liste contenue dans la variable $TOOLS

Il suffit de supprimer ou d’ajouter des noms d’applications dans cette liste pour qu’il soient intégrés dans le système de base.

utilities-log-viewer

Exécuter une commande dans un script

arrow-up-mini

bash -c source /root/.bashrc

preferences-desktop-filetype-association

Créer un lien symbolique

Dans le cas de script nous voulons créer un lien symbolique pour pouvoir lancer l’application eZServerMonitor.sh sans rentrer dans la hiérachie des dossier : comme n’importe quel programme.arrow-up-mini

La première notion à comprendre sont les emplacemenst où le système va aller chercher les applications et va les lancer lorsque nous tapons uniquement leur nom. Il s’agit du $PATH. La variable d’environnement pour l’emplacement des exécutables (sous Windows %PATH%)

# $PATH
-bash: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin: Aucun fichier ou dossier de ce type

On voit que le répertoire /root/bin est présent dans la liste. Nous allons donc créer un répertoire bin

 mkdir /root/bin

Nous pouvons maintenant créer un lien symbolique du répertoire où se trouve l’executable vers le répertoire /root/bin

Au passage nous renommons l’executable par un nom plus facile à retenir : diag (pour diagnostic)

ln -s /root/centos/centos_70/eZServerMonitor.sh /root/bin/diag

Nous pouvons maintenant lancer « diag » avec les même options que l’application d’origine

emblem-package

Gestion des paquets

arrow-up-mini

yum (Yellowdog Updater Modified)

RPM est l’outil de base permettant d’installer des logiciels préparés au format « RPM ». Yum est d’une certaine façon une surcouche à rpm facilitant la vie de l’utilisateur.

# deltarpm contient la différence entre une vieille et une nouvelle version d'un rpm,
# ce qui permet de recréer le nouveau rpm à partir du deltarpm et de l'ancien.
yum install deltarpm
# Mettre à jour la distribution complète
yum update
# Rechercher un paquet  
yum list <nom*>
# Installer un paquet
yum install  <nom>
# Installer un paquet sans confirmation
yum -y install <nom>
# Supprimer un paquet
yum remove  <nom>
# Supprimer un paquet sans confirmation
yum -y remove  <nom>

# Lister les groupes de paquets
yum grouplist
# Installer un groupe de paquets
yum groupinstall <groupe>
# Supprimer un groupe de paquets
yum groupremove <groupe>

# tester les réglages de yum (priorité des dépôts)
yum check-update
# Nettoyer les en-têtes, les caches de paquets, nettoyer tout
yum clean headers 
yum clean packages 
yum clean all

# Affiche la liste des dépôt configurés 
yum repolist 

# Affiche les informations sur un paquet
yum info <paquet>
# Indique à quel paquet appartient ce fichier
yum provides <fichier>

preferences-desktop-user-password

Utilisateurs

arrow-up-mini
Commande pour ajouter un utilisateur

adduser <nom>

Commande pour ajouter un mot de passe à un utilisateur

passwd <nom>

Commande pour supprimer un utilisateur
L’option -r supprime le dossier de celui-ci

userdel -r <nom>

changes-prevent

Appartenance des répertoires et des fichiers

arrow-up-mini

chown propietaire:groupe <fichier>
chown -R proprietaire : groupe <répertoire>

emblem-important

Droits des fichiers et répertoires

arrow-up-mini

chmod 0644 <fichier>
chmod -R 0755 <repertoires>

debug-step-over

Rendre exécutable un fichier

arrow-up-mini

chmod +x <fichier>

svn-commit

La gestion des dépots

arrow-up-mini
La gestion des dépôts s’effectue dans le répertoire ;

/etc/yum.repos.d/

Les nom des dépôts à ajuster

  • CentOS-Base.repo
  • epel.repo
  • rpmforge.repo

run-build

Connaître la version du noyau

arrow-up-mini

uname -r 
uname -a

mail-encrypted

Visualiser les fichiers spéciaux

arrow-up-mini

cat /prop/cpuinfo
watch cat /proc/mdstat

drive-multidisk

Gestion des disques

arrow-up-mini

# Affiche l'utilisation de la mémoire vive
free
# Affiche l'utilisation de l'espace disque (indique le système de fichier - option T) 
df -hT
# Liste les partitions de tous les disques 
fdisk -l
# Permet de modifier, détruire, créer des partitions sur le disque "a"
fdisk /dev/sda
# Affiche toutes les partitions qui sont montées actuellement
mount
# Monte la partition 1 du disque a dans le répertoire /mnt/
mount /dev/sda1 /mnt/
# Démonte le périphérique qui se trouve dans /mnt/ --> /dev/sda1 
umount /mnt/
# Crée un système de fichiers de type ext2 sur la partition 1 du disque a
mkfs.ext2 /dev/sda1
# Effectue une vérification du système de fichier
fsck
# Affiche le résultat complet du test d'un disque dur
smartctl -a /dev/sda
# Affiche la température d'un disque dur
smartctl -a /dev/sda | grep Temperature

document-encrypted

Version du bios

arrow-up-mini

dmidecode -t bios

document-preview

Lister les composants du système

arrow-up-mini

# Lister tous les composants sur les ports PCI
lspci
# Lister tous les composants sur les ports USB 
lsusb
# Lister tous les modules du noyau 
lsmod
# Obtenir des infos sur un module 
modinfo nomdumodule
# Programme pour ajouter et enlever des modules dans le Noyau Linux
modprobe

kivio

Gérer les services (systemD)

arrow-up-mini
systemd est un gestionnaire de service. Il permet de les lancer, les arrêter, les relancer, d’en assurer un suivi, etc.

Un service est un programme qui est exécuté en tache de fond. C’est à dire qu’il effectue son travail sans interaction directe avec l’utilisateur. Certains services sont des composants essentiels du système. L’autre petit nom d’un service est daemon.

systemctl
# Les différentes options : lancer, arrêter, relancer et son état
systemctl start/stop/restart/status <service>
# Activer/désactiver un service au démarrage (rien à voir avec la ligne au-dessus)
systemctl enable/disable <service>
# Lister les services activés et retouner leur nombre
systemctl list-unit-files | grep enabled | wc -l

klipper

Gérer les services (systemV)

arrow-up-mini
Les services étaient des scripts d’initialisation du système, appelés scripts system V. De par l’utilisation de SystemD il y en a de moins en moins mais il faut tout de même savoir les gérer.

chkconfig
# Lister les services et leur état
chkconfig –list
# Activer/désactiver un service au démarrage
chkconfig <service> on/off
# Arrêter/démarrer un service
services <service> start/stop

audio-card

Les commandes réseau

arrow-up-mini

# Renvoie un état sommaire du réseau
ip route
# Commande de gestion des interfaces réseau
ifconfig
# Pinger un IP dans le réseau local
ping 192.168.0.x
# Pinguer un hôte extérieur 
ping google.fr 
# Pour connaitre la passerelle 
route -n 
# Pour savoir par où passe notre demande 
traceroute google.fr
# nslookup est un programme informatique de recherche d'information dans le Domain Name System
nslookup google.fr
# Statistiques sur notre réseau local 
netstat -tulps
netstat -taupe ou taupen
# Programme informatique de débogage de serveurs DNS. Il signifie Domain Information Groper. 
dig google.fr
# Nmap est un scanner de ports
# nom de machine, IP, adresse mac
nmap -sn 192.168.0.0/24
# Liste les ports ouverts sur chaque machine
nmap -sS 192.168.0.0/24
# Voir l'activité d'une interface réseau : 
tcpdump -n -i eth0

k3b

Le parefeu

arrow-up-mini

# iptables -L -n

go-last-view-page

Duplication bit à bit

arrow-up-mini

dd
dd if=/dev/zero of/dev/sda bs=512 count=64

edit-select-all

Planifier les taches

arrow-up-mini

crontal -l 
crontab -e

drive-harddisk

Le raid

arrow-up-mini

mdadm -sS 
mdadm --zero-superblock /dev/sda1
watch cat /proc/mdstat

chronometer

Faire une pause dans un script

arrow-up-mini

sleep <chiffre>

accessories-dictionary

Les logs

arrow-up-mini

dmesg 
tail -f /var/log/messages

system-switch-user

Grub

arrow-up-mini

grub2-mkconfig -o /boot/grub/grub.cfg

emblem-documents

Divers

arrow-up-mini

top 
kill 
ps aux 
visudo 
su 
su -
wget
tar -xvzf

help-hint

Astuces pour vim

arrow-up-mini

# Commenter et décommenter plusieurs lignes d'un seul coup 

# Commenter : 
ctrl + v 
J (jusqu’à la ligne souhaitée) 
Maj + i 
On tape un # (le dièse est mis sur la première ligne) 
Touche Echap (les commentaires sont mis en place) 
 
# Décommenter : 
ctrl + v 
J (jusqu’à la ligne souhaitée) 
x 
Dans les deux cas : 
:wq

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s