Bonjour à tous!
Ayant eu des problèmes de configuration réseau lors de mes premières installations en mode commande, j’ai décidé d’écrire un petit script bash afin de rendre cette opération plus agréable. Le rendu me convient, mais, connaissant mon niveau en programmation, je doute (très) fortement qu’il soit optimisé. Les différents tests que j’ai effectués m’ont parus concluants (je vais continuer mes tests sous une machine virtuelle que je suis en train de préparer).
L’objectif de ce poste est d’améliorer ce script afin qu’il puisse être utilisé le plus simplement possible par ceux qui le voudront…
Ce script fait:
- Configuration Ethernet en statique et DHCP, options choisies par le menu
- Configuration Wifi en WEP et WPA en statique et en DHCP
Les fichiers tels que /etc/network/interface_wifi sont, vous l’aurez compris destinés à faire des tests pour ne pas bousiller ma configuration perso!
Ne soyez pas trop durs
Désolé d’avance pour la longueur!
#!/bin/bash
#-------------------------------
# Configuration du réseau
#-------------------------------
# Powered by Chr0me
# License GPL v3
clear
cat << EOF
--------------------------------------
Configuration du réseau
--------------------------------------
1. Configuration Ethernet
2. Configuration du Wifi
3. Quitter
EOF
echo -n "Choix:"
#Saisie du choix par l'utilisateur
read choix
## choix n°1 : configuration du réseau Ethernet en statique
## si choix = 1 alors passer au menu Ethernet
choix1()
{
clear
cat << EOF
-------------------------------------
Configuration Ethernet
-------------------------------------
1. Statique
2. DHCP
3. Retour au menu principal
EOF
echo -n "Choix:"
read choix_eth
choix_eth1()
{
clear
cat << EOF
-------------------------------------
Configuration Ethernet
-------------------------------------
EOF
echo -n "Nom de l'interface Ethernet:"
read interface
echo -n "Adresse IP:"
read ip_add
echo -n "Masque:"
read netmask
echo -n "Passerelle:"
read gateway
echo -n "Serveur DNS:"
read nameserver
## Affichage des paramètres dans le fichier de configuration
echo "
## Configuration de $interface en mode Statique
auto $interface
iface $interface inet static
address $ip_add
netmask $netmask
gateway $gateway
dns-nameservers $nameserver" >> /etc/network/interfaces
## Si la dernière commande est correctement exécutée, on affiche
if [ $? = "0" ]; then
echo "Les données de configuration ont été écrites avec succès"
echo "Redémarrage du service..."
sleep 1
fi
## On envoie également le DNS dans le resolv.conf
echo $nameserver >> /etc/resolv.conf
## On affiche le fichier créé (ou modifié)
cat /etc/network/interfaces
sleep 5
$0
}
choix_eth2()
{
clear
cat << EOF
-----------------------------------
Configuration Ethernet
-----------------------------------
EOF
echo -n "Nom de l'interface Ethernet:"
read interface
echo "
## Configuration de $interface en mode dynamique
auto $interface
iface $interface inet static
address $ip_add
netmask $netmask
gateway $gateway
dns-nameservers $nameserver" >> /etc/network/interfaces
## Si la dernière commande est correctement exécutée, on affiche
if [ $? = "0" ]; then
echo "Les données de configuration ont été écrites avec succès"
echo "Redémarrage du service..."
sleep 1
cat /etc/network/interfaces
sleep 5
$0
fi
}
case $choix_eth in
1) choix_eth1
;;
2) choix_eth2
;;
3) $0
;;
esac
}
# On veut savoir si c'est en wep ou en WPA
# 1. WEP
# 2. WPA
# Tant que le choix n'est pas 3 : Quitter,
# Affichage du menu
choix2()
{
clear
cat << EOF
-----------------------------------
Configuration Wifi
-----------------------------------
1. WEP
2. WPA
3. Quitter
EOF
echo -n "Choix:"
#Saisie du choix par l'utilisateur
read choix_wifi
choix_wifi1()
{
#Menu de la configuration du wifi en WEP
clear
cat << EOF
-----------------------------------
Configuration WEP
-----------------------------------
1. Statique
2. DHCP
3. Retour au menu principal
EOF
echo -n "Choix:"
read choix_wep
# Si utilisateur choisi le 1 il passe en statique
choix_wep1()
{
clear
cat << EOF
-----------------------------------
Configuration WEP
-----------------------------------
EOF
# Saisie des informations relatives au réseau wifi
echo -n "Nom de l'interface :"
read interface_wifi
echo -n "Adresse IP:"
read ip_add_wifi
echo -n "Masque:"
read netmask_wifi
echo -n "Passerelle:"
read gateway_wifi
echo -n "Serveur DNS:"
read nameserver_wifi
echo -n "Nom de votre réseau Wifi:"
read essid
echo -n "Clé WEP de votre Box:"
read wifi_key
#Affichage des paramètres dans le fichier de configuration Wifi
echo "
## Configuration de $interface_wifi en mode Statique
auto $interface_wifi
iface $interface_wifi inet static
address $ip_add_wifi
netmask $netmask_wifi
gateway $gateway_wifi
dns-nameservers $nameserver_wifi
wireless-essid $essid
wireless-key $wifi_key " >> /etc/network/interfaces
## Si la dernière commande est correctement exécutée, on affiche
if [ $? = "0" ]; then
echo "Les données de configuration ont été écrites avec succès"
echo "Redémarrage du service..."
/etc/init.d/networking restart
sleep 1
fi
## On envoie également le DNS dans le resolv.conf
echo $nameserver >> /etc/resolv_wifi
cat /etc/network/interfaces
sleep 5
}
choix_wep2()
{
clear
cat << EOF
-----------------------------------
Configuration WEP
-----------------------------------
EOF
echo -n "Nom de l'interface :"
read interface_wifi
echo -n "Nom de votre réseau Wifi:"
read essid
echo -n "Clé WEP de votre Box:"
read wifi_key
## Configuration de $interface en mode dynamique
echo "
## Configuration de $interface en mode dynamique
auto $interface_wifi
iface $interface_wifi inet dhcp
wireless-essid $essid
wireless-key $wifi_key" >> /etc/network/interfaces
## Si la dernière commande est correctement exécutée, on affiche
if [ $? = "0" ]; then
echo "Les données de configuration ont été écrites avec succès"
echo "Redémarrage du service..."
/etc/init.d/networking restart
sleep 1
fi
echo $nameserver >> /etc/resolv
cat /etc/network/interfaces
sleep 5
}
case $choix_wep in
1) choix_wep1
;;
2) choix_wep2
;;
3) $0
esac
#fi
# Selon le choix du menu, on éxecute le choix 1 ou le choix 2
}
choix_wifi2()
{
clear
cat << EOF
-----------------------------------
Configuration WPA
-----------------------------------
1. Statique
2. DHCP
3. Retour au menu principal
EOF
echo -n "Choix:"
read choix_wpa
choix_wpa1()
{
clear
cat << EOF
-----------------------------------
Configuration WPA
-----------------------------------
EOF
echo -n "Nom de l'interface Wifi:"
read interface_wifi
echo -n "Adresse IP:"
read ip_add_wifi
echo -n "Masque:"
read netmask_wifi
echo -n "Passerelle:"
read gateway_wifi
echo -n "Serveur DNS:"
read nameserver_wifi
echo -n "Télecharger le paquet (nécessite le mot de passe sudo) [Y/n]?"
read rep
# Demande pour le téléchargement du paquet avec sudo : Ce test ne fonctionne apparement pas...
if [ $rep = "" or "Y" or "y" ]; then
sudo apt-get install wpasupplicant
fi
echo -n "Nom de votre réseau Wifi (Attention à la casse!):"
read essid
echo -n "Quel est le type de chiffrement (PSK - TKIP - AES):"
read chiffrement
echo -n "Indiquez votre clé WPA (Attention à la casse!):"
read wpa_key
echo "
## Configuration de $interface en mode statique
auto $interface_wifi
iface $interface_wifi inet dhcp
wireless-essid $essid
wireless-key $wifi_key" >> /etc/network/interfaces
echo "ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1
fast_reauth=1
network={
ssid="$essid"
scan_ssid=1
proto=WPA
key_mgmt=WPA-$chiffrement
psk="$wpa_key"
priority=5
}" >> /etc/wpa_supplicant/wpa_supplicant.conf
chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf
if [ $? = "0" ]; then
echo "Les données de configuration ont été écrites avec succès"
echo "Redémarrage du service..."
/etc/init.d/networking restart
sleep 1
else
echo "Les données n'ont pas pu être écrites"
fi
}
choix_wpa2()
{
clear
cat << EOF
-----------------------------------
Configuration WPA
-----------------------------------
EOF
echo -n "Télecharger le paquet (nécessite le mot de passe sudo) [Y/n]?"
read rep
# Demande pour le téléchargement du paquet avec sudo
if [ $rep = ""]; then
sudo apt-get install wpasupplicant
fi
echo -n "Nom de votre réseau Wifi (Attention à la casse!):"
read essid
echo -n "Quel est le type de chiffrement (PSK - TKIP - AES):"
read chiffrement
echo -n "Indiquez votre clé WPA (Attention à la casse!):"
read wpa_key
## Inscription des paramètres dans le fichier interfaces_wifi
echo "
## Configuration de $interface en mode statique
auto $interface_wifi
iface $interface_wifi inet dhcp
wireless-essid $essid
wireless-key $wifi_key" >> /etc/network/interfaces
## Inscription des paramètres dans le fichier wpa_supplicant.test pour le paramétrage de l'AP
echo "ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1
fast_reauth=1
network={
ssid="$essid"
scan_ssid=1
proto=WPA
key_mgmt=WPA-$chiffrement
psk="$wpa_key"
priority=5
}" >> /etc/wpa_supplicant/wpa_supplicant.conf
chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf
if [ $? = "0" ]; then
echo "Les données de configuration ont été écrites avec succès"
echo "Redémarrage du service..."
/etc/init.d/networking restart
sleep 1
else
echo "Les données n'ont pas pu être écrites"
fi
}
case $choix_wpa in
1) choix_wpa1
;;
2) choix_wpa2
;;
3) $0
;;
esac
}
case $choix_wifi in
1) choix_wifi1
;;
2) choix_wifi2
;;
3) $0
;;
esac
}
case $choix in
1) choix1
;;
2) choix2
;;
esac
Le 01/08/11 :
- modification des echo remplacés par EOF
- ajout du chmod 600 au wpa_supplicant.conf