Catégorie : Systèmes

16 juin 2015 /

Pour envoyer un message à un seul utilisateur, on doit d’abord trouver le numéro de terminal  » pts  » que l’utilisateur utilise:

who

ce qui nous donne le résultat:

wall1

On voit que l’utilisateur utilise le pts/3 (ici par rapport à l’heure).

Donc ensuite:

echo "testeuuuu... li la louuuuu" >> /dev/pts/3

wall2

Pour envoyer un message à tous le monde, On utilise la commande Wall.
Le mieux est de créer un fichier avec notre message pour se prémunir d’une éventuelle faute de frappes.

Création du fichier et du message:

echo "Le serveur va être redémarré pour maintenance, déconnectez-vous je vous prie" >> msg_cmd_wall

Envoi du message:

wall < msg_cmd_wall

15 juin 2015 /

La commande source permet de lire et d’exécuter les commandes contenues dans un fichier passé en argument avec l’environnement du shell en cours, puis renvoie le code de retour de la dernière commande exécutée dans le fichier.

En gros, de base, un processus ne peut pas modifier l’environnement de son parent. Il ne peut modifier que son propre environnement. Il peut aussi choisir quel environnement transmettre lors d’un exec.

Quand tu exécutes un script de cette façon « ./script.sh », ton shell devient un fork dans lequel un nouveau shell va exécuter le script. Les variables du script sont placés dans l’environnement du processus fils, pas dans le processus père.

Alors que quand on « source » un fichier, cela demande au shell courant d’interpréter le script qui est passe en argument. Cela ne crée pas de sous-shell. Donc dans ce cas le script modifie bien l’environnement du shell courant.

Note que « .  » est équivalent à « source ».
Au lieu de faire « source script.sh », on peux faire « . ./script.sh ».

Exemple:

. ./script.sh

ou

source ./script.sh

Avec cette commande, on « source » le fichier script.sh contenant des fonctions ou des variables; c’est à dire que les variables contenues dans le fichier « sourcé » deviennent connues pour le shell courant, idem pour les fonctions.

Rappel:

Faites attention,  « ./  » et source ne font pas la même chose.

./script.sh lance le script comme un fichier executable, lancant un nouveau shell pour son execution.
source script.sh lis et execute les commandes/paramètres du fichier passé en argument dans le shell courant

Donc « ./script.sh » n’est pas comme « . script.sh », mais « . script.sh » est pareil que « source script.sh »

 

14 juin 2015 /

Le signe « – » n’est pas en lui-même un opérateur lorsqu’un nom de fichier est attendu, c’est plutôt une option reconnue par certains Unix et Linux. Cela écrit dans la sortie standard (stdout) ou lit dans l’entrée standard (stdin), comme par exemple tar ou cat, mais il y en a d’autre

Voici un exemple avec cat:

echo "salut" | cat -

Cela affichera:

salut

Voici un exemple avec tar:

tar -cvf - /home/starmate | ssh sauvegarde@sauvegarde.home "cat > sauvegarde.tar"

Ici tar va envoyer la création de l’archive dans la sortie standard, qui sera pipée ( | ) via SSH sur le serveur « sauvegarde.home ». Puis son affichage via cat sera redirigé dans un fichier sauvegarde.tar dans le répertoire personnel de l’utilisateur local « sauvegarde ».

Un  » –  » redirige donc la sortie vers stdout ou accepte une entrée de stdin, plutôt qu’un fichier.
Cette méthode est utilisé principalement lorsque l’on juge utile de manipuler des fichiers à travers des tubes.

14 juin 2015 /

Si, par mégarde, vous avez édité un fichier en oubliant de l’avoir ouvert avec sudo, et que donc vous pouvez pas sauvegarder. Ne paniquez pas à l’idée de tout recommencer.
Normalement, il faudrait quitter le ficher et tout recommencer en mettant sudo cette fois.

Pour contourner ce problème sans avoir à quitter votre édition, il suffit de saisir ça :

:w !sudo tee %

Ça peut faire gagner pas mal de temps…

13 juin 2015 /

Voici un moyen d’identifier le nombre de connexion active sur un serveur web.
Si le serveur est à l’écoute sur le port 80, vous pouvez vérifier le nombre de connexion à ce port avec la commande Netstats.

Pour lister et compter les connections sur ce port:

netstat -nt | grep :80 | grep ESTABLISHED | wc -l

Pour regarder sur les port 80 et 443:

netstat -nt | egrep ":(80|443)"| grep ESTABLISHED | wc -l

Ou encore en filtrant sur l’utilisateur Apache:

lsof -i|grep "apache"| grep "ESTABLISHED" | wc -l