Blue Flower

Jeux de données

Nous allons utiliser un jeux de fichier pour illustrer les différents type de merge.

cat produits.txt
ID_PRD  NOM DESCRIPTION
ID_PRD1   Prd1 Desc prd1
ID_PRD2   Prd2 Desc prd2
ID_PRD3   Prd3 Desc prd3
ID_PRD4   Prd4 Desc prd4
ID_PRD5   Prd5 Desc prd5
cat stocks.txt 
ID_PRD  QUANTITE 
ID_PRD1   10 
ID_PRD2   20 
ID_PRD3   30 
ID_PRD4   40 
ID_PRD5   50
cat commandes.txt 
ID_CMD ID_PRD
ID_CMD1   4  
ID_CMD2   4 
ID_CMD3   4
ID_CMD4   2
ID_CMD5   3

Fusion simple

La commande "join" fusionne les fichiers, avec comme critère par défaut la première colonne, dans notre cas le ID_PRD. Seuls les lignes avec le ID_PRD présent dans les deux fichiers sont affichées.

join produits.txt stocks.txt 
ID_PRD NOM_PRD DESCRIPTION QUANTITE 
ID_PRD1 Prd1 Desc prd1 10 
ID_PRD2 Prd2 Desc prd2 20 
ID_PRD3 Prd3 Desc prd3 30 
ID_PRD4 Prd4 Desc prd4 40 
ID_PRD5 Prd5 Desc prd5 50

 

Précisons à la commande join les colonnes à afficher : du fichier premier fichier, uniquement la colonne numéro 1, du deuxième fichier uniquement la colonne numéro 2 : 

join -o 1.1 2.2 produits.txt stocks.txt 
ID_PRD QUANTITE
ID_PRD1 10
ID_PRD2 20
ID_PRD3 30
ID_PRD4 40
ID_PRD5 50

Précisons à la commande join les colonnes à afficher : du fichier premier fichier, uniquement les colonnes 1 et 2, du deuxième fichier uniquement la colonne numéro 2 : 

join -o 1.1 1.2 2.2 produits.txt stocks.txt 
ID_PRD NOM_PRD QUANTITE
ID_PRD1 Prd1 10
ID_PRD2 Prd2 20
ID_PRD3 Prd3 30
ID_PRD4 Prd4 40
ID_PRD5 Prd5 50

 

Autres exemples, chercher les lignes manquantes entre deux fichiers

$ cat file1.txt 
ID;STATUS
1;EXPORTE
2;EXPORTE
3;EXPORTE
4;REVOQUE
6;EXPORTE

 

$ cat file2.txt 
ID;STATUS
1;IMPORTE
3;EXPORTE
5;REVOQUE
6;EXPORTE

 

$ grep -F -v -x -f file1.txt file2.txt 
1;IMPORTE
5;REVOQUE

 

$ grep -F -v -x -f file2.txt file1.txt 
1;EXPORTE
2;EXPORTE
4;REVOQUE

 

$ grep -F -x -f file2.txt file1.txt 
ID;STATUS
3;EXPORTE
6;EXPORTE

 

$ grep -F -x -f file1.txt file2.txt 
ID;STATUS
3;EXPORTE
6;EXPORTE

 

 Explication :

 -v (show non-matching lines), -x (match whole lines) and -f (read patterns from file) options

Without the -F flag, grep interprets PATTERN,

 

Biblio

https://bioinfo-fr.net/fusionner-des-fichiers-entre-eux-la-commande-join

Mémo de commandes Linux

La commande hostnamectl

osboxes@ubuntu19-10PC1:~$ hostnamectl 
   Static hostname: ubuntu19-10PC1
   Pretty hostname: ubuntu19-10_PC1
         Icon name: computer-vm
           Chassis: vm
        Machine ID: af44956437ff4d9fba77c6e656cf730a
           Boot ID: f5231de30a884590afcd8916ccbfda46
    Virtualization: oracle
  Operating System: Ubuntu 19.10
            Kernel: Linux 5.3.0-46-generic
      Architecture: x86-64
osboxes@ubuntu19-10PC1:~$

Grep récursif

grep -r -i xx /etc/ssh => on recherche le terme xx dans tous les fichiers du répertoire /etc/ssh

Changer le hostname

sudo hostnamectl set-hostname <new_name> => modifie le fichier /etc/hostname
sudo vi /etc/hosts => mettre le nouveau nom
sudo reboot -h now

 

Sur ubuntu 19.10, le nouveau firewall est ufw, qui signifie Uncomplicated Firewall.

 

sudo ufw enable => active le firewall

sudo ufw disable => désactive le firewall

Ce statut est mémorisé dans le fichier /etc/ufw/ufw.conf.

De même, toute règle ajoutée en ligne de commande est sauvegardée dans le fichier /etc/ufw/user.rules.

 

Voir la configuration : ufw status

$sudo ufw status verbose
Status: active
Logging: on (low)
Default: allow (incoming), allow (outgoing), deny (routed)
New profiles: skip
$

Dans cet exemple, tout les paquets entrants sont autorisés, ce qui n'est pas recommandé.

Désactivons les paquets entrants :

$sudo ufw default deny incoming
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)
$sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
$

Si on veut ré-activer les paquets entrants:

$sudo ufw default allow incoming
Default incoming policy changed to 'allow'
(be sure to update your rules accordingly)
$sudo ufw status verbose
Status: active
Logging: on (low)
Default: allow (incoming), allow (outgoing), disabled (routed)
New profiles: skip
$

Pour activer le routage, il faut modifier le fichier /etc/ufw/sysctl.conf. Dans ce fichier, dé commenter la ligne net/ipv4/ip_forward=1. Rebooter la machine. 

Suite au reboot, ufw status verbose montre toujours disabled routed.

A présent, "sudo ufw default allow routed" fait passer "routed" à "allow".

Cet article explique comment configurer un PC en routeur avec deux pattes, ceci avec Ubuntu server 19.10. Créer un routeur nécessite plusieurs cartes réseau, ce que je n'ai pas sur mon PC. Nous utiliserons donc virtualbox.

Pour ce faire, notre VM aura 3 interfaces.

L'interface 1 sera dans le même réseau que le PC hôte. Ainsi, depuis le PC hôte, il sera possible de se connecter en ssh. Cette interface aura par exemple pour IP 192.168.1.101.

Les interfaces 2 et 3 seront les 2 pattes de notre routeur avec pour IP respective 1.0.0.254/24 et 2.0.0.254/24.

Nous aurons aussi 2 autres VMs (PC1 et PC2) pour simuler un PC, un de chaque côté des 2 interfaces de notre routeur.

Pour la VM en charge de simuler le routeur, la configuration au niveau de la GUI Virtualbox est la suivante :

  • Interface 1 :

Mode d'accès réseau : Accès par pont

Nom : wlp2s0 (ma carte wifi de l'hôte)

  • Interface 2:

Mode d'accès réseau : Réseau interne

Nom : intnet_1-0-0-0_masque24 (vous pouvez donner le nom de votre souhait)

  • Interface 3:

Mode d'accès réseau : Réseau interne

Nom : intnet_2-0-0-0_masque24

 

Le mode d'accès de type Réseau interne permet de définir un sorte de switch interne.

Les deux autres VMs destinées à simuler un PC de chaque côté du routeur utiliseront le "réseau interne" correspondant.

 

  • Configuration via netplan
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.1.101/24]
      gateway4: 192.168.1.254
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
    enp0s8:
      dhcp4: no
      addresses: [1.0.0.254/24]
      routes:
      - to: 2.0.0.0/24
        via : 2.0.0.254
    enp0s9:
      dhcp4: no
      addresses: [2.0.0.254/24]
      routes:
      - to: 1.0.0.0/24
        via : 1.0.0.254

On a donc défini pour enp0s8 et enp0s9 des routes pour passer du réseau 1.0.0.0/24 au réseau 2.0.0.0/24

 

Pour la VM en charge de simuler PC1, la configuration au niveau de la GUI Virtualbox est la suivante :

  • Interface 1 :

Mode d'accès réseau : Accès par pont

Nom : wlp2s0 (ma carte wifi de l'hôte)

  • Interface 2:

Mode d'accès réseau : Réseau interne

Nom : intnet_1-0-0-0_masque24 (vous pouvez donner le nom de votre souhait)

  • Configuration via netplan
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.1.102/24]
      gateway4: 192.168.1.254
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
    enp0s8:
      dhcp4: no
      addresses: [1.0.0.1/24]
      routes:
      - to: 2.0.0.0/24
        via: 1.0.0.254

La patte du côté du routeur a donc pour IP 1.0.0.1/24. On déclare la route 2.0.0.0/24 qui peut être atteinte en passant par 1.0.0.254.

 

 

 

 

Sur les versions linux récente (c'est le cas de ubuntu server 19.10), la commande ifconfig n'est plus installée par défaut.

Il est conseillé d'utiliser netplan.

 

Exemples de commandes pour remplacer ifconfig

ip address show ou ip addr ou ip a : montre les adresses IP

ip link show => montre si le lien est up ou down

sudo ip addr add 192.168.1.101/24 dev enp0s3 => pour affecter une adresse IP

sudo ip link set dev enp0s3 up => pour monter le lien

sudo ip route add default via 192.168.1.254 => pour ajouter une route par défaut

 

Exemple de fichier de config pour ubuntu server 19.10

Fichier /etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.1.101/24]
      gateway4: 192.168.1.254
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
    enp0s8:
      dhcp4: no
      addresses: [1.0.0.254/24]
      routes:
      - to: 2.0.0.0/24
        via : 2.0.0.254
    enp0s9:
      dhcp4: no
      addresses: [2.0.0.254/24]
      routes:
      - to: 1.0.0.0/24
        via : 1.0.0.254

Dans cet exemple, le serveur a trois cartes réseaux. Le serveur possède une route par défaut et un routage est défini entre les interfaces 1.0.0.254 et 2.0.0.254. Les DNS utilisés (8.8.8.8 et 8.8.4.4) sont ceux de Google.

sudo netplan try => pour tester la configuration

sudo netplan -d apply => pour debugger une configuration qui échoue

sudo netplan -d apply => pour faire appliquer la configuration

 

Exemple de fichier de config pour Ubuntu Desktop 19.10

Fichier /etc/netplan/01-network-manager-all.yaml

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.1.102/24]
      gateway4: 192.168.1.254
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]

 

Sous-catégories