N-C

Aller au contenu | Aller au menu | Aller à la recherche

mercredi 28 mars 2012

déploiement de sudoers

le script sous entends que vous déployez depuis un server se connectant à tous les autres serveurs (via clef ssh par exemple)


#!/bin/bash

# PATH par defaut du SUDOERS #
SUDOERS=/etc/sudoers

# l'ensemble de tous les serveurs #
SERVERS=server_liste

# liste de serveurs specifiques #
SERV_DMZ=/DMZ/sudoers_liste
SERV_MZ=/MZ/sudoers_liste

# config sudoers par defaut a installer #
SUDO_DEFAULT=/sudoers_default

# sudoers specifique par domaine #
SUDO_DMZ=/DMZ/sudoers
SUDO_MZ=/MZ/sudoers

# deploiement #

for i in `cat $SERVERS` ; do scp -p $SUDO_DEFAULT $i:$SUDOERS ; done

for j in `cat $SERV_DMZ`; do scp -p $SUDO_DMZ $j:$SUDOERS ; done

for b in `cat $SERV_MZ`; do scp -p $SUDO_MZ $b:$SUDOERS ; done



deploiement : changement de password (généré automatiquement)

Tester A partir d'un serveur ayant sa clef ssh sur son panel de server - Tester A partir aussi d'un montage NFS commun 

Mais cela n'est pas une obligation.

Voici un script de déploiement de password pour un utilisateur a partir d'un algo personnel.

Pratique lorsque l'on a un large panel de serveurs, il suffit de se rappeler de l'algorithme et non plus des mdp !

ici l'exemple d'algo :

#############################################################################
# algorithme du mot de passe : root                                       
# - &                                                                     
# - dernière lettre du nom du server                         
# - année actuelle #
# - &                                                                      
# - Première lettre du nom du serveur en majuscule                                      
# - P                                                                      
# Exemple : pour un serveur voltaire cela donnera : &e2012&VP             
#############################################################################

Hostname1=`hostname |cut -d "." -f 1 | sed 's/$/-/g' | sed 's/.-/=&/g' | sed 's/^.*=//g' | sed 's/-//g'`
Hostname2=`hostname |cut -d "." -f 1 | sed 's/^../&-/g' | sed 's/-.*$//g' | sed 's/^.//g' | tr 'a-z' 'A-Z'`
Hostname=`echo "&"${Hostname1}${Date}"&"${Hostname2}"P"`
echo ${Hostname}

## deploiement localement du password ##
## le deploiement se fait localement, ici nous utilisons un montage NFS ou se trouve le script ##

passwd --stdin root < /tmp/mdp_tmp

## nettoyage des traces ##

rm -f /tmp/mdp_tmp

vérication d'un montage Linux

Ce script permet de vérifier un montage sous Linux, et si le montage et / ou le répertoire n'existe pas, il le créer et le monte.

Pratique pour la gestion de repo par exemple !

#!/bin/bash
REP_LOCAL=/repo_loc
REP_DIST=server:/rep_dist
if [[ ! ( -d $REP_LOCAL )  ]]
       then
               mkdir -p $REP_LOCAL ;
fi
MOUNT=`mount |grep $REP_LOCAL |wc -l`
if [ $MOUNT -ne 1 ]
        then
                mount $REP_DIST $REP_LOCAL ;
fi


mercredi 8 février 2012

gestion des repos Linux

comment gérer des repo locaux depuis des repo officiels

2 solutions selon 2 protocoles : (script shell)
RSYNC :

#!/bin/bash

## via montage NFS par exemple

DIST=/repo_dist

REPO=/repo/Linux/PFP/config_par_domaine/pivot_doc/repo/


rsync -avpHt $DIST $REPO


createrepo --update $REPO


HTTP :

#!/bin/bash

DIST=http://download.fedora.redhat.com/pub/epel/6/x86_64/

REPO=/repo_local

COMMAND='wget -nv -c -r -nd -l1 -nc  --no-parent -A.rpm'

cd $REPO

$COMMAND  $DIST

createrepo --update $REPO


Ensuite il faut y associer le yum.conf client : (il faut un apache sur le server yum repo)
créer un fichier repo_local.repo >> /etc/yum.repos.d/

echo -e " [repo_local] \nname = repo_local \nbaseurl = http://server_repo_local/repo/ \nenable = 1 \ngpgcheck = 0" >> /etc/yum.repos.d/repo_local.repo


faire un clean des metadata yum si nécessaire sur le client : yum clean all

mardi 8 février 2011

[ Perl ] Socket test script

#!/usr/bin/perl -w
# client1.pl - a simple client
#----------------

use strict;
use Socket;

# initialize host and port
my $proto = getprotobyname('tcp');

# get the port address
my $iaddr = inet_aton($ARGV[0]);
my $paddr = sockaddr_in($ARGV[1], $iaddr);

#open FIC,">> journal.txt";

# create the socket, connect to the port
while ( 1 )
    {
    open FIC,">> journal.txt";
    my $t = localtime( );
    print FIC "$t\n";
    socket(SOCKET, PF_INET, SOCK_STREAM, $proto) or die "socket: $!";
    connect(SOCKET, $paddr) or print FIC "connect: $!\n";
    print FIC  "-------------------------------------\n";
    sleep(1);
    close SOCKET or die "close: $!";
    sleep(4);
    }

- page 2 de 3 -