scripts/MASTER/deploy_machine.sh

124 lines
3.4 KiB
Bash
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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