Dyrk.org
Do You Really Know

[Linux] – Récupérer la ligne de commande et les paramètres qui viennent d’être saisie !

Publié le 6 janvier 2017 par #Ro0t

 

Okey Okey, je me doute que le titre n’est pas méga accrocheur, et que la plupart d’entre vous, risquent de décrocher à sa simple lecture.

Cet article s’adresse donc aux « Linuxiens » (et aux curieux), car cela fait un paquet de temps que je n’ai pas écrit d’article sur Linux, et surtout, que ça me manquait un peu !

Un peu d’histoire

 

Je suis actuellement en mission à la sécurité sociale …
Eh oui … je suis probablement entrain d’endetter encore plus notre pauvre pays !
Enfin bon, j’ai mis en place récemment un produit, que l’on administre et que l’on configure à l’aide d’un ensemble de scripts de mon cru !
Et … bien entendu, il peut arriver que les personnes l’utilisant souhaitent le réinstaller !
C’est là, que cet article intervient !!!

Un exemple, pour mieux comprendre

Lorsque vous installez votre ordinateur …
Vous le configurez …
Vous le customisez …
Bref vous le faite vivre !
Puis un jour vient, où … grand ménage de printemps, vous désirez, pour une raison ou une autre le réinitialiser …
Vous  souhaitez cependant conserver vos « configuration » / « customisation » sur lesquelles vous avez probablement passé déjà pas mal de  temps…

Dans l’exemple ci-dessus, avoir un historique de toutes les lignes de commandes « utiles« , que vous avez pu saisir, ça  peut-être pas mal !

 

Bien entendu, lorsque je dis « toutes les lignes de commande » … j’entends par là, que vous avez la possibilité de  cibler uniquement les « commandes » à conserver …

 

Par exemple :

DeployerMonServeur.sh –nomDeDomaine « Dyrk.org » –bdd « dyrk_db » –user_db « admin_dyrk » –password_db « password_dyrk » …

Ou encore :

AjouterUnUtilisateur.sh –username « MarieAntoinette » –password « MichelineDu93« 

Soyons imaginatif, on peut imaginer ici, un Admin Système sur un environnement « spécifique » et réalisant une migration  …
Celui-ci devra probablement se retaper des dizaines de lignes de commande …

 

La mise en place final

Nous arrivons enfin aux quelques lignes de commande qui vous permettront dans ces scripts d’extraire à la fois le nom du script, ainsi que ses paramètres, dans l’ordre, tout en gérant les divers espaces, parenthèses ou caractères spéciaux !

Appelons notre script ~/RePlay.sh :

lastCmd=`fc -l | tail -n 1 | sed -e "s/^[0-9]*//g"`;
echo "$(set -f;echo $lastCmd)" >> $1

Donnons-lui maintenant les droits d’exécution (pour pouvoir l’utiliser directement) :

chmod +x RePlay.sh

Vous n’aurez donc plus qu’à ajouter dans votre fichier de profile ~/.bash_profile un nom de fichier d’exportation des lignes de commande :

export ReplayFile=~/sauvegarde_commandes.log

Si vous voulez tout de suite tester, il vous faudra « sourcer » le fichier .bash_profile :

source ~/.bash_profile

Puis ajouter dans vos différents scripts cette ligne de commande :

~/RePlay.sh $ReplayFile

Et voilà, vous pouvez tester !

 

Ci-dessus, 3 scripts, utilisant « replay.sh »
Je les exécute avec plein de paramètres plus ou moins complexe, ainsi que des redirecteurs  ( <, >, |, …)
Et toutes ces commandes sont bien stockées dans le fichier de log ! Ici « test.log »

 

Conclusion

 

Voilà, je vous laisse à présent vous amuser, et surtout, je vous souhaite à tous un très bon Weekend !

N’hésitez pas, si vous avez des idées à  me les partager par commentaire :)