merci je vais modifier tout ca ce week end et je reposterai le script
Avis sur la création d'un script
- Modifié
j'ai encore un peut du mal avec l'anglaisMarbolanGos wrote:Ça semble propre pas d'utilité pour moi mais c'est bien commenté en tout cas !
Juste un truc qui me choque c'est que les commentaires sont en Français :pint:
Ma Fed13 de test n'inclus pas cette commande (not found)proxy wrote: - pour détecter la distrib, je fais : $(lsb_release -si)
c'est surproxy wrote:- quand tu as des if, elif, etc .. la syntaxe : case,esac est plus jolie 😉
dans mon cas je ne vois pas comment faireproxy wrote:- quand tu as plusieurs if then, tu peux faire :
[ CONDITION ] && action 1 && action 2
Voici le script modifié (j'ai pas encore testé le --enablemkhomedir avec l'ancien sed pam_mkhomedir)
#!/bin/bash
###############################################################################
#
# TSE :
# TSE with free NX server and LDAP
#
# by Antoine WALLON a.k.a Neowdj <antoine at famillewallon dot com>
# Version 1.2
#
###############################################################################
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not,
# - write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# - See http://www.gnu.org/licenses/gpl.html
#
###############################################################################
# Information à modifier #######
## Adresse ip ou hostname du serveur LDAP (ex: LDAPSERVER="192.168.1.1" ou LDAPSERVER="masterldap" )
LDAPSERVER=""
# Le DN de votre LDAP (ex: BASEDN="dc=ldap,dc=priv")
BASEDN=""
# Si votre serveur LDAP à besoin d'une authentification pour se connecter rentrer son DN complet (ex: ROOTBINDDN="cn=manager,dc=ldap,dc=priv")
# Sinon commenter ces 2 lignes (ROOTBINDDN et ROOTBINDPASSWD)
ROOTBINDDN=""
# Ainsi que son mot de passe (ex: ROOTBINDPASSWD="passwd")
ROOTBINDPASSWD=""
# Fin des informations à modifier ###########################
## Ne pas modifier à partir d'ici ##########################
# Affiche le nom de la distribution
OS=`cat /etc/issue | awk '{print $1}' | head -n1`
#Vérification si le user est root
if [ "$(id -u)" != '0' ]
then
echo "Vous devez être logguer en root pour utiliser ce script"
echo "Utiliser la commande su -"
exit
fi
#Affichage de l'aide
if [ $# = 1 ]
then
echo ""
echo -e "Ce script permet d'automatiser l'installation d'un serveur TSE en couplant un server FreeNX et un serveur LDAP\n"
echo -e "Usage: sh $0\n"
echo "Spécification: "
echo "- Fonctionne sous CentOS et Fedora"
echo "- Désactive Selinux"
echo -e "- Modifie les fichiers node.conf, ldap.conf, ldap.secret, nsswitch.conf, pam.d/system-auth, pam.d/password-auth, pam.d/sshd\n"
echo "Tous les fichiers sont sauvegardé en .origin dans leurs dossiers respectif"
exit
fi
# Si variable est nul on affiche un message d'alerte
if [ -z $LDAPSERVER ] || [ -z $BASEDN ]
then
echo "Aucun serveur LDAP n'a été défini"
echo "Veuillez modifier les informations dans le script"
exit
fi
# Si /etc/pam.d/sshd.origin existe c'est que le script à déjà été exécuter donc on demande à l'utilisateur si il veut poursuivre
if [ -e "/etc/pam.d/sshd.origin" ]
then
echo "Vous avez déjà executé ce script voulez vous quand même le réxecuter (o/n):"
read EXECUTE
while [ "$EXECUTE" != "o" ] && [ "$EXECUTE" != "n" ]
do
echo "Veuillez taper o ou n:"
read EXECUTE
done
if [ "$EXECUTE" == "n" ]
then
exit
fi
fi
# Détection de la distrib et installation de FreeNX, ldap_nss et openldap-clients
# Si CentOS
case $OS in
CentOS)
if [ ! $(rpm -qa | grep rpmforge-release) ];
then
echo -e "Installation du dépot RPMforge en cours...\n"
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.$(uname -m).rpm
fi
if [ ! $(rpm -qa | grep freenx) ];
then
echo -e "Installation de FreeNX en cours...\n"
yum install -y nx freenx
fi
if [ ! $(rpm -qa | grep nss_ldap) ];
then
echo -e "Le package nss_ldap non présent dans le système"
echo -e "Installation de nss_ldap en cours...\n"
yum install -y nss_ldap
fi
if [ ! $(rpm -qa | grep openldap-clients) ];
then
echo -e "Le package openldap-clients non présent dans le système"
echo -e "Installation de openldap-clients en cours...\n"
yum install -y openldap-clients
fi ;;
# Si Fedora
Fedora)
if [ ! $(rpm -qa | grep freenx) ];
then
echo -e "Installation de FreeNX en cours...\n"
yum install -y nx freenx
fi
if [ ! $(rpm -qa | grep nss_ldap) ];
then
echo -e "Le package nss_ldap non présent dans le système"
echo -e "Installation de nss_ldap en cours...\n"
yum install -y nss_ldap
fi
if [ ! $(rpm -qa | grep openldap-clients) ];
then
echo -e "Le package openldap-clients non présent dans le système"
echo -e "Installation de openldap-clients en cours...\n"
yum install -y openldap-clients
fi ;;
*)
echo -e "Votre Distribution n'a pas été Reconnue. Ce script fonctionne uniquement sur les distributions CentOS et Fedora\n"
exit;;
esac
# Désactivation de Selinux (qui créer des problèmes lors de la création des utilisateurs)
echo -e "Désactivation de selinux\n"
sed -i 's/SELINUX=enforcing/SELINUX=disable/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=permissive/SELINUX=disable/g' /etc/sysconfig/selinux
setenforce 0
# Copie du fichier node.conf.sample en node.conf
cd /etc/nxserver ; cp node.conf.sample node.conf
# Activation de ENABLE_PASSDB_AUTHENTICATION
sed -i 's/#ENABLE_PASSDB_AUTHENTICATION="0"/ENABLE_PASSDB_AUTHENTICATION="1"/g' /etc/nxserver/node.conf
# Démarrage du service freenx-server
service freenx-server start
# Vérification de la présence de Authconfig
if [ ! -e "/usr/sbin/authconfig" ];
then
echo -e "authconfig non présent dans le système"
echo -e "Installation de authconfig en cours...\n"
yum install -y authconfig
fi
#modification du fichier ldap
echo -e "Modification du fichier ldap.conf pour l'authentification LDAP"
echo -e "Sauvegarde du fichier ldap.conf en cours...\n"
cp /etc/ldap.conf /etc/ldap.conf.origin
authconfig --enableldap --enableldapauth --enablemkhomedir --ldapserver=$LDAPSERVER --ldapbasedn=$BASEDN --update
if [ ${ROOTBINDDN} ];
then
echo "rootbinddn $ROOTBINDDN" >> /etc/ldap.conf
echo $ROOTBINDPASSWD > /etc/ldap.secret
chmod 600 /etc/ldap.secret
fi
# Modification de fichier nsswitch pour rajouer ldap après files.
echo -e "Modification du fichier nsswitch pour l'authentification LDAP"
echo -e "Sauvegarde du fichier system-auth en cours...\n"
cp /etc/nsswitch.conf /etc/nsswitch.conf.origin
sed -i -e "s|files|files ldap|" /etc/nsswitch.conf
# Modification du fichier system-auth pour remplacer pam_sss.so par pam_ldap.so (sous Fedora)
# sinon l'authentification ne fonctionnera pas et rajouer un pam_mkhomedir.
echo -e "Modification du fichier system_auth pour l'authentification LDAP"
echo -e "Sauvegarde du fichier system-auth en cours...\n"
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.origin
sed -i 's/pam_sss.so/pam_ldap.so/g' /etc/pam.d/system-auth
sed -i "/session required pam_limits.so/i\session optional pam_mkhomedir.so skel=/etc/skel umask=0022" /etc/pam.d/system-auth
# Modification du fichier password-auth pour remplacer pam_sss.so par pam_ldap.so (sous Fedora)
# sinon l'authentification SSH ne fonctionnera pas.
echo -e "Modification du fichier pam.d/password-auth pour l'authentification LDAP"
echo -e "Sauvegarde du fichier pam.d/password-auth en cours...\n"
cp /etc/pam.d/password-auth /etc/pam.d/password-auth.origin
sed -i 's/pam_sss.so/pam_ldap.so/g' /etc/pam.d/password-auth
echo -e "Modification du fichier pam.d/sshd pour l'authentification LDAP"
echo -e "Sauvegarde du fichier pam.d/sshd en cours...\n"
cp /etc/pam.d/sshd /etc/pam.d/sshd.origin
sed -i "/session include password-auth/i\session optional pam_mkhomedir.so skel=/etc/skel umask=0022" /etc/pam.d/sshd
# Affichage de la clef d'authentification du serveur NX
echo -e "---------------------------------------------------------------------------------\n"
echo -e "L'installation est maintenant terminé\n"
echo -e "Copier / Coller le résultat dans votre client NX dans la partie Key... (à partir de -----BEGIN DSA PRIVATE KEY----- jusqu'à -----END DSA PRIVATE KEY----- )\n"
cat /etc/nxserver/client.id_dsa.key
echo -e "\n"
en version texte http://files.famillewallon.com/public/scripts/tseV1.2.txtC'est vrai, lsb_release n'est pas installé par défaut.
[ ! $(rpm -qa | grep rpmforge-release) ] && echo -e "Installation du dépot RPMforge en cours...\n" && rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.$(uname -m).rpm
[ ! $(rpm -qa | grep freenx) ] && echo -e "Installation de FreeNX en cours...\n" && yum install -y nx freenx
🙂je ne trouve pas que le code soit bien lisible en une ligne. Certes le script est raccourci, mais d'un autre coté je trouve ca moin lisible.proxy wrote:🙂[ ! $(rpm -qa | grep rpmforge-release) ] && echo -e "Installation du dépot RPMforge en cours...\n" && rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.$(uname -m).rpm [ ! $(rpm -qa | grep freenx) ] && echo -e "Installation de FreeNX en cours...\n" && yum install -y nx freenx
Après chacun ses gouts...
On peut toujours ruser si tu ne veux pas tout sur une même ligne.
[ ! $(rpm -qa | grep rpmforge-release) ] && \
echo -e "Installation du dépot RPMforge en cours...\n" && \
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.$(uname -m).rpm
[ ! $(rpm -qa | grep freenx) ] && \
echo -e "Installation de FreeNX en cours...\n" && \
yum install -y nx freenx
Histoire d'alléger encore un chouïa :
rpm -qa | grep rpmforge-release || { echo "Installation du dépot RPMforge en cours..." ; rpm -Uhv [url]http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.$(uname[/url] -m).rpm; }
rpm -qa | grep freenx || { echo "Installation de FreeNX en cours..."; yum install -y nx freenx; }
des fans de l'obfuscation?
On peut faire encore plusmadko wrote:des fans de l'obfuscation?
on se croirait chez les Perl Mongers :hammer:
rpm -q <paquet> plutot que |grep <paquet>, voila j'ai gagné des octets :p
On peu meme en gagner un max en ne testant pas la presence des paquets et en installant direct, pas grave s'ils y sont déjà yum et rpm ne feront rien
On peu meme en gagner un max en ne testant pas la presence des paquets et en installant direct, pas grave s'ils y sont déjà yum et rpm ne feront rien
- Modifié
:hammer:
Merci à vous,
il ne me reste plus qu'à trouver un moyen de confiner les utilisateurs dans leurs environnements et de créer un DVD d'install de fed qui inclura mon script
page dédié du projet : http://www.famillewallon.com/Projets/TSE-FreeNX-LDAP
Merci à vous,
il ne me reste plus qu'à trouver un moyen de confiner les utilisateurs dans leurs environnements et de créer un DVD d'install de fed qui inclura mon script
page dédié du projet : http://www.famillewallon.com/Projets/TSE-FreeNX-LDAP