Blue Flower

Cette technique permet d'exécuter une application graphique sur un serveur et de voir l'affichage non pas sur le serveur mais sur votre PC.

Solution 1, via un tunnel ssh

Pour ceci, entre votre PC et le serveur, établir un tunnel ssh avec l'option de forwarding X11.

Depuis votre PC :

ssh -X userX@UnServeur

xclock

=> la montre s'affiche sur votre PC

 

Autre solution 

La solution ci-dessous permet depuis un PC (PC source)  d'envoyer l'affichage sur un autre PC (PC cible). Dans ce cas, on ne passe pas dans un tunnel ssh, donc la sécurité est moindre.

Sur le PC cible (celui sur lequel l'affichage aura lieu) :

xhosts +  adresse IP du PC source 

On doit aussi modifier la config du serveur X du PC cible pour l'autoriser à répondre à des requêtes TCP :

sudo vi /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf

Ajouter à ce fichier la ligne suivante :

xserver-allow-tcp=true

 

Sur le PC source :

export DISPLAY=<ip PC cible>:0

Lancer une application graphique en ligne de commande, par exemple firefox

=> firefox s'affichera sur le PC cible

 

La commande top donne des informations globales sur les performances de votre PC et liste les processus accaparant le plus de ressources. 

Voici un exemple :

top - 22:02:16 up 9 min,  3 users,  load average: 0,34, 0,36, 0,24
Tasks: 210 total,   1 running, 209 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1,5 us,  0,8 sy,  0,0 ni, 97,7 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:   3974772 total,  1617432 used,  2357340 free,    46520 buffers
KiB Swap:  7811068 total,        0 used,  7811068 free.   636896 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
 1194 root      20   0  363776  49076  21204 S   3,3  1,2   0:08.10 Xorg        
 2980 thierry   20   0  665036  21384  13544 S   2,7  0,5   0:00.91 gnome-term+ 
 2323 thierry   20   0 1631868 115916  42228 S   2,0  2,9   0:08.66 compiz      
 2745 thierry   20   0  773200  92868  31080 S   0,7  2,3   0:03.13 chrome      
 3042 thierry   20   0   29176   1716   1188 R   0,7  0,0   0:00.53 top         
   68 root      20   0       0      0      0 S   0,3  0,0   0:00.26 kworker/0:1   

Explications sur la première ligne

Elle indique que le PC est démarré depuis 22h02, soit depuis 9 minutes. 3 utilisateurs sont connectés, ce qui peut être vérifié par la commande who (en l’occurrence il s'agit de trois sessions pour le même user).

load average 0.34 => charge sur la dernière minute

load average 0.36 => charge sur les 5 dernières minutes

load average 0.24 => charge sur les 15 dernières minutes

Une charge de 100% ne vaut pas dire que le système est saturé étant donné que vous avez probablement un PC multi cœurs.

Explications sur la deuxième ligne

Elle indique donc le nombre de processus au total et le nombre de processus utilisant le processeur.

Explications sur la troisième ligne

us : indique le pourcentage de CPU utilisé par les utilisateurs du système

sy : indique le pourcentage de CPU utilisé par le noyau linux

ni : indique le pourcentage de CPU utilisé par les processus qui ont été nicés (c'est à dire dont la priorité est différente de la priorité normale)

id : indique le pourcentage de CPU non utiilisé

wa : indique le pourcentage de CPU en attente d'I/O

hi : indique le pourcentage de CPU utilisé par les interruptions matérielles

si: indique le pourcentage de CPU utilisé par les interruptions logicielles

Explications sur la quatrième et cinquième ligne

Il s'agit de la mémoire physique et de la mémoire virtuelle.

 

Redirection dans un fichier

top -n 1 -b > top-output.txt

 

Test de la commande top en générant de la charge

Pour tester top, simulons de la charge. Ci-dessous quelques exemples.

dd if=/dev/zero of=/dev/null

ou

while true; do true; done
while true; do /bin/true; done

ou

thierry@PC2:~$ NUMCPU=8
thierry@PC2:~$ for ((i=0;i<$NUMCPU;i++));do echo 'scale=100000;pi=4*a(1);0' | bc -l & done ; sleep 10; killall bc

top indique alors :

top - 22:31:22 up 38 min,  4 users,  load average: 2,40, 0,93, 0,48
Tasks: 222 total,   9 running, 213 sleeping,   0 stopped,   0 zombie
%Cpu(s): 99,6 us,  0,4 sy,  0,0 ni,  0,0 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:   3974772 total,  1934824 used,  2039948 free,    53204 buffers
KiB Swap:  7811068 total,        0 used,  7811068 free.   781820 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
29826 thierry   20   0    9384   1336    656 R  51,9  0,0   0:03.86 bc          
29828 thierry   20   0    9384   1264    656 R  49,9  0,0   0:03.78 bc          
29830 thierry   20   0    9384   1332    656 R  49,9  0,0   0:03.77 bc          
29832 thierry   20   0    9384   1336    656 R  49,9  0,0   0:03.76 bc          
29836 thierry   20   0    9384   1332    656 R  49,9  0,0   0:03.77 bc          
29834 thierry   20   0    9384   1332    656 R  48,9  0,0   0:03.76 bc          
29822 thierry   20   0    9384   1332    656 R  47,9  0,0   0:03.65 bc          
29824 thierry   20   0    9384   1336    656 R  47,9  0,0   0:03.65 bc          
 1194 root      20   0  366084  49972  22096 S   1,3  1,3   0:42.93 Xorg 

=> on voit une charge de 2.40, ce qui montre que le PC a plusieurs coeurs

 

On peut aussi tester avec fork bomb : :(){ :|:& };:

Dans cet article, nous allons voir :

  • comment envoyer un mail en ligne de commande en utilisant le serveur smtp de google
  • comment automatiser l'envoi de cet email au boot du PC.

 

Installation de l'outil

Pour communiquer avec le serveur SMTP, nous utiliserons ssmtp : sudo apt-get install ssmtp mailutils

Configuration du serveur smtp

Il faut renseigner les paramètres de connexion au serveur SMTP. Dans l'exemple, nous utilisons le serveur SMTP de Google. Un compte Google est donc nécessaire. La configuration de l'accès au serveur SMTP se réalise dans le fichier /etc/ssmtp/ssmtp.conf.

Fichier /etc/ssmtp/ssmtp.conf : 

root=<votre email chez Google>
mailhub=smtp.googlemail.com:587
hostname=PC
FromLineOverride=YES
AuthUser=<votre email chez Google>
AuthPass=<votre mot de passe chez Google>
UseSTARTTLS=YES

  

Envoi du mail en ligne de commande

Dans cet exemple, nous envoyons dans le corps du mail l'adresse IP publique de notre box ADSL (l'option s est le sujet du mail)

curl ifconfig.me | sudo mail -s "adresse IP" adresseMailDestinataire 

 

Automatisation de l'envoi d'un email au boot du PC

Pour cela, il faut créer un script dans /etc/init.d et le déclarer dans les runlevel.

Le script sendIpByMail.sh (script devant appartenir à root et avoir le droit x) :

curl ifconfig.me | sudo mail -s "adresse IP" adresseMailDestinataire
exit 0

Déclaration de ce script dans le runlevel 2 en tant que script de démarrage avec le numéro 99 (car les scripts d'un même runlevel sont exécutés du numéro le plus petit au plus grand) : 

update-rc.d sendIpByMail.sh start 99 2 .
update-rc.d: warning: /etc/init.d/sendIpByMail.sh missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 Adding system startup for /etc/init.d/sendIpByMail.sh ...
   /etc/rc2.d/S99sendIpByMail.sh -> ../init.d/sendIpByMail.sh

Une fois less lancé, vous pouvez entrer les commandes suivantes :
=  => Donne le nom du fichier
!cmd =>  permet d'entrer une commande unix
-N => permet d'avoir les numéros de ligne
-n => permet de supprimer les numéros de ligne
g => va au début du fichier
G => va à la fin du fichier

Sous-catégories