Je suis un débutant en Linux Shell Script. Je veux changer l'adresse IP par Linux Shell Script et appelée par une application Web PHP.
J'ai terminé mon application Web PHP et le script shell. Avant qu'ils ne se combinent et fonctionnent, j'aimerais vérifier si le script shell peut fonctionner correctement.
Mon Linux Shell Script stockera 7 variables sans $ 0 (le nom du script) .:
- Le fichier d'interface réseau (
/etc/sysconfig/network-scripts/ifcfg-{XXX}
) - Ancienne adresse IP
- Nouvelle adresse IP
- Ancien masque de sous-réseau
- Nouveau masque de sous-réseau
- Ancienne passerelle
- Nouvelle passerelle
La plupart des vérifications ont déjà été effectuées par mon application PHP car je suis un novice en Linux Shell Script, je ne veux pas le faire sur mon script shell. Mon application PHP peut s’assurer que les données sont correctes et remplies de valeurs.
Donc, pour exécuter ce script shell, je tape ce qui suit pour voir les résultats:
sh ./ipchanger.sh /etc/sysconfig/network-scripts/ens32 192.168.1.18 192.168.1.201 32 24 192.168.1.1 192.168.1.1
Sens:
- Spécifiez le fichier de scripts réseau cible.
- Changer l'adresse IP de
192.168.1.18
à192.168.1.201
. - Changer le masque de sous-réseau de
255.255.255.255
à255.255.255.0
.
En fait, il lancera les commandes suivantes:
sudo sed -i -r "s/$currentIpAddress/$newIpAddress/g" $fileName
sudo sed -i -r "s/$currentSubnetMask/$newSubnetMask/g" $fileName
sudo sed -i -r "s/$currentGateway/$newGateway/g" $fileName
Il ne renvoie aucune erreur et son aspect est correct, car la date de la dernière modification du fichier de script réseau a été mise à jour. Mais quand j'ai ouvert le fichier, rien n'a changé.
Puis je echo
les commandes, il retourne la commande exacte que je voulais. Ensuite, je lance les trois lignes à l’invite de commande et vérifie le fichier à nouveau, toutes les informations ont changé!
echo $SHELL
oups -p $$
dans les deux interfaces pour confirmer qu’elles sont identiques.