tentative bientot avortee de faire un script inutile pour serialiser des machines (ou un autre mot mieux adapte)

This commit is contained in:
onimaro 2019-01-22 13:36:33 +01:00
parent 9656c427b4
commit fba9c9f3f1
3 changed files with 127 additions and 0 deletions

123
MASTER/deploy_machine.sh Normal file
View File

@ -0,0 +1,123 @@
#!/bin/bash
# script de deploiement de machine sous linux via ssh, parceque ca me gonfle de le faire à la main tout le temps.
# le but sera de deployer les outils de base sur une becane au systeme tout neuf
# la becane aura besoin :
# - d'un debian (ou dérivés)
# - d'un serveur ssh (plus pratique pour deployer a distance)
# - d'un user onimaro avec sudoers ALL=ALL(ALL) NOPASSWD:ALL en connexion mdp (on verra pour du root plus tard)
# y'a plus qu'a espérer que ce script ne reste pas 7 lignes de commentaire durant toute son existance.
# parametres
# param1 : machine_cible : url ou ip de la machine sur laquelle on souhaite déployer le bordel
##################################
# help
if [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$1" = "" ]
then
echo
echo "###########################################################################################################################"
echo "Syntaxe : ${0##*/} machine_cible"
echo "machine_cible = url ou ip de la machine cible"
echo "###########################################################################################################################"
echo
exit 0
fi
##################################
# check nombre d'arguments
if [ $# -ne 1 ]
then
echo "Mauvais nombre d'arguments : $#"
echo "Il en faut 1"
exit 1
fi
# constantes a passer en fichier de parametres
user_cible=onimaro
# recuperation des arguments
machine_cible=$1
##################################
# FONCTIONS #
##################################
# fonction connexionSSH
# arguments :
# arg1 : commande lancée
#
# passage de commandes vers la cible en SSH
#
function connexionSSH
{
# check nombre d'arguments
if [ $# -ne 1 ]
then
echo "Mauvais nombre d'arguments : $#"
echo "Il en faut 1"
exit 1
fi
# recuperation arguments
commande_cible=$1
[ $(ssh ${user_cible}@${machine_cible} "${commande_cible}") -eq 0 ] || ( echo erreur sur la commande ${commande_cible} && exit 4 )
}
# fonction disaster_hunter
# arguments :
# aucun
#
# on anticipe diverses catastrophes
function disaster_hunter
{
# est-ce que le premier argument n'est pas une injection ?
[ $(echo ${machine_cible} | wc -w) -eq 1 ] || ( echo "une url ou une IP, rien d'autre, SVP" && exit 2 )
# est-ce qu'on se connecte à la machine en SSH ?
[ $(ssh ${machine_cible} "exit") -eq 0 ] || ( echo "machine ${machine_cible} injoignable." && exit 3 )
# verification des listes de paquets et de users
for fichier in liste_paquets liste_users; do
if [ -r ${fichier} ]; then
OLD_IFS=$IFS
IFS='\n'
for paquet in $(cat ${fichier}); do
[ $(echo ${paquet} | wc -w ) -eq 1 ] || shithappened=8
done
IFS=${OLD_IFS}
[ ${shithappened} -eq 8 ] && echo "Le fichier ${fichier} ne doit contenir qu'un mot par ligne" && exit 6
pas_de_${fichier}=0
else
echo "fichier ${fichier} illisible ou introuvable."
pas_de_${fichier}=1
fi
done
}
# fonction deploy_packages
# arguments :
# aucun
#
# on deploie les paquets a partir du fichier de parametres liste_paquets
function deploy_packages
{
for paquet in $(cat ${fichier_paquets}); do
connexionSSH ${paquet}
done
}
##################################
# MAIN #
##################################
disaster_hunter
[ ${pas_de_liste_paquets} -eq 0 ] && deploy_packages
[ ${pas_de_liste_users} -eq 0 ] && deploy_packages
deploy_users

3
MASTER/liste_paquets Normal file
View File

@ -0,0 +1,3 @@
vim
mlocate
net_tools

1
MASTER/liste_users Normal file
View File

@ -0,0 +1 @@
invitay