mardi 18 décembre 2018

Python Pandas for dummies

Fist step to Python Pandas library

Loading pandas

In [3]:
# this is a comment
import pandas as pd 
In [8]:
# creating a series 
# A one dimentional array 
s = pd.Series([3,5,5,9,6,8])
s
Out[8]:
0    3
1    5
2    5
3    9
4    6
5    8
dtype: int64
In [9]:
# returning the first 5 element of a series
s.head()
Out[9]:
0    3
1    5
2    5
3    9
4    6
dtype: int64

Reading data from URL

In [12]:
ufo = pd.read_table('http://bit.ly/uforeports', sep=',')
In [13]:
ufo.head()
Out[13]:
City Colors Reported Shape Reported State Time
0 Ithaca NaN TRIANGLE NY 6/1/1930 22:00
1 Willingboro NaN OTHER NJ 6/30/1930 20:00
2 Holyoke NaN OVAL CO 2/15/1931 14:00
3 Abilene NaN DISK KS 6/1/1931 13:00
4 New York Worlds Fair NaN LIGHT NY 4/18/1933 19:00
In [16]:
# columns can be access as array or as obje 
# ufo['State'] === ufo.State
 
ufo.State
Out[16]:
0        NY
1        NJ
2        CO
3        KS
4        NY
5        ND
6        CA
7        MI
8        AK
9        OR
10       CA
11       AL
12       SC
13       IA
14       MI
15       CA
16       CA
17       GA
18       TN
19       AK
20       NE
21       LA
22       LA
23       KY
24       WV
25       CA
26       WV
27       NM
28       NM
29       UT
         ..
18211    MA
18212    CA
18213    CA
18214    TX
18215    TX
18216    CA
18217    CO
18218    TX
18219    CA
18220    CA
18221    NH
18222    PA
18223    SC
18224    OK
18225    CA
18226    CA
18227    CA
18228    TX
18229    IL
18230    CA
18231    CA
18232    WI
18233    AK
18234    CA
18235    AZ
18236    IL
18237    IA
18238    WI
18239    WI
18240    FL
Name: State, Length: 18241, dtype: object
In [29]:
# add a new row to the table 
ufo['Address'] = ufo['City'] + ' ' + ufo.State
ufo.head()
Out[29]:
City Colors Reported Shape Reported State Time Address
0 Ithaca NaN TRIANGLE NY 6/1/1930 22:00 Ithaca NY
1 Willingboro NaN OTHER NJ 6/30/1930 20:00 Willingboro NJ
2 Holyoke NaN OVAL CO 2/15/1931 14:00 Holyoke CO
3 Abilene NaN DISK KS 6/1/1931 13:00 Abilene KS
4 New York Worlds Fair NaN LIGHT NY 4/18/1933 19:00 New York Worlds Fair NY
In [30]:
# see the shap of the data ( number of rows and columns)
ufo.shape
Out[30]:
(18241, 6)
In [31]:
# to see data type of each columns 
ufo.dtypes
Out[31]:
City               object
Colors Reported    object
Shape Reported     object
State              object
Time               object
Address            object
dtype: object
In [26]:
# view columns
ufo.columns
Out[26]:
Index(['City', 'Colors Reported', 'Shape Reported', 'State', 'Time',
       'Address'],
      dtype='object')
In [32]:
# drop colums[col1, col2, ..., coln]
ufo.drop(['Address'], axis=1, inplace=True)
ufo.head()
Out[32]:
City Colors Reported Shape Reported State Time
0 Ithaca NaN TRIANGLE NY 6/1/1930 22:00
1 Willingboro NaN OTHER NJ 6/30/1930 20:00
2 Holyoke NaN OVAL CO 2/15/1931 14:00
3 Abilene NaN DISK KS 6/1/1931 13:00
4 New York Worlds Fair NaN LIGHT NY 4/18/1933 19:00
In [36]:
# sort a column of table
ufo.State.sort_values(ascending=True).head()
Out[36]:
10454    AK
14421    AK
3511     AK
103      AK
2929     AK
Name: State, dtype: object
In [37]:
# sort table base on specific column
ufo.sort_values('City').head()
Out[37]:
City Colors Reported Shape Reported State Time
1761 Abbeville NaN DISK SC 12/10/1968 0:30
4553 Aberdeen NaN CYLINDER WA 6/15/1981 22:00
16167 Aberdeen NaN VARIOUS OH 3/29/2000 3:00
14703 Aberdeen NaN TRIANGLE WA 9/30/1999 21:00
389 Aberdeen ORANGE CIRCLE SD 11/15/1956 18:30

jeudi 12 juillet 2018

Commande linux mtr

- no title specified
Reseau

MTR : outi de diagnostique reseau

MTR mis pour MY TRACEROUT est un outil de dignostique et d’isolation réseau des problèmes dans le réseau. Très puissant, mtr regroupe les fonctionalités des outils ping et traceroute et permet de founir un rapport plus détaillé sur l’état du réseau.

Installation

Etant sur une machine Linux/Debian notre installation se fera avec la commande suivante :
apt install mtr

Fonctionnement

mtr tout comme ping et traceroute utilise utilise le protocole ICMP ( Internet  Control Message Protocol) pour tester le connectivité entre deux points sur Internet.
Dans le mode de fonctionnement de l’outil ping, Lorsqu'un utilisateur ping un hôte sur Internet, une série de paquets ICMP sont envoyés à l'hôte, qui répond en envoyant des paquets en retour. Le client de l'utilisateur est alors en mesure de calculer le temps d'aller-retour entre deux points sur Internet.
Par contre avec des outils tels que traceroute et mtr envoient des paquets ICMP avec des TTL augmentant de manière incrémentielle afin d'afficher la route ou la série de sauts que le paquet effectue entre l'origine et sa destination.

Générer un rapport MTR

Notons que mtr est un outil bidirectionnel car, founir la route du trafic entre deux hôtes. La route empruntée entre deux points sur Internet peut varier énormément en fonction de l'emplacement et des routeurs situés en amont. Pour cette raison, il est recommandé de collecter des rapports MTR dans les deux directions pour tous les hôtes rencontrant des problèmes de connectivité.
Connecté depuis la machine suivante :
 wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether cc:b0:da:b3:22:9d brd ff:ff:ff:ff:ff:ff
    inet 192.168.137.10/24 brd 192.168.137.255 scope global dynamic wlp2s0
       valid_lft 604590sec preferred_lft 604590sec
    inet6 fe80::7b06:2cf9:24bb:64e6/64 scope link
       valid_lft forever preferred_lft forever
qui est une adresse de la sale de cours IFI nous testons la route et la connectivité vers l’adresse www.vnpt.com.vn
commande :
mtr www.vnpt.com.vn
 
 
Fig  affichage de la commande mtr
mtr nous montre les différents équipement ( leur adresses IP) entre la destination et notre machine. De plus il fait un rapport en temps réel de l’état de cette route à chaque paquet envoyé.
Par fois, certain équipement ( routeur , machine) vont  vont rejeter l'ICMP , ce qui era montré sur l’affichage pour « ??? ». Sinon, cela peut aussi être une problème avec la route emprunté par les paquets

Description des différents champs

La colonne Loss% affiche le pourcentage de perte de paquets à chaque saut.
La colonne Snt compte le nombre de paquets envoyés.
Les quatres colonnes suivantes Last, Avg, Best et Wrst sont toutes des mesures de latence en millisecondes. La dernière est la latence du dernier paquet envoyé, Avg est la latence moyenne de tous les paquets, tandis que Best et Wrst affichent le meilleur (le plus court) et le pire (le plus long) aller-retour d'un paquet vers cet hôte. Dans la plupart des cas, la colonne moyenne (moyenne) devrait être au centre de notre attention.
La dernière colonne, StDev, fournit l'écart type des latences à chaque hôte. Plus l'écart type est élevé, plus la différence est grande entre les mesures de latence. L'écart type  permet d'évaluer si la moyenne fournie représente le vrai centre de l'ensemble de données, ou a été faussée par une sorte de phénomène ou d'erreur de mesure. Si l'écart type est élevé, les mesures de latence sont incohérentes.

Champs qui varient entre l’envoi des paquets :  

Snt : les paquets envoyés
Last : temps de latence du dernier paquet envoyé
Avg : la moyenne des latences
StDev : l’écart type des latences à chque hôte

lecture de raport MTR

commande :
mtr  --report www.vnpt.com.vn
Start: Fri Jul 13 05:07:39 2018
HOST: debian                      Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- DESKTOP-V2RL6KK.mshome.ne 10.0%    10    3.8   3.4   2.0  10.7   2.8
  2.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0
  3.|-- logout.lan                 0.0%    10    8.6   5.6   3.3  13.7   3.1
  4.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0
  5.|-- 172.31.99.22               0.0%    10    5.4   9.2   4.2  19.0   4.7
  6.|-- static.vnpt-hanoi.com.vn   0.0%    10    8.8   7.5   5.8  10.6   1.6
  7.|-- static.vnpt.vn             0.0%    10   19.0   9.1   5.6  19.0   3.9
  8.|-- static.vnpt.vn             0.0%    10    6.4   8.4   6.4  13.7   2.3
  9.|-- localhost                  0.0%    10    6.4   7.6   5.6  11.4   1.9
L'option --report enverra 10 paquets sauf si spécifié avec --report-cycles = [nombre-de-paquets], où [nombre-de-paquets] représente le nombre total de paquets que l’on veut envoyer à l'hôte distant.
Chaque ligne numérotée dans le rapport représente un saut. Les sauts sont les nœuds Internet que les paquets traversent pour se rendre à destination. Les noms des hôtes sont déterminés par des recherches DNS reverses.
Si nous voulon omettre les recherches rDNS, vous pouvez utiliser l'option --no-dns, qui produit une sortie similaire à celle ci-dessous :
mtr --report --no-dns www.vnpt.com.vn
Start: Fri Jul 13 05:10:47 2018
HOST: debian                      Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 192.168.137.1              0.0%    10    4.5   3.0   1.9   4.5   0.7
  2.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0
  3.|-- 10.224.184.1               0.0%    10  123.7  17.7   3.5 123.7  37.4
  4.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0
  5.|-- 172.31.99.22               0.0%    10  132.5  21.2   5.5 132.5  39.2
  6.|-- 123.25.27.177              0.0%    10  126.1  19.1   5.3 126.1  37.6
  7.|-- 123.29.5.41                0.0%    10  116.8  17.9   5.2 116.8  34.7
  8.|-- 113.171.33.42              0.0%    10    9.6   8.6   6.2  12.1   1.6
  9.|-- 123.31.40.181              0.0%    10    7.7   7.3   6.0  11.1   1.5

architecture réseau