Déploiement de poste : FOG & Drivers windows

Drivers-install.vbsFOG est un outil formidable pour le déploiement de poste client que j’utilise en milieu professionnel. J’aurais envie de dire qu’il ne lui manque que la parole, mais non : il ne lui manque que la gestion des drivers

Devant un parc d’ordinateur plutôt hétérogène je ne pouvais pas mettre tous les drivers dans mon image. Je les donc déporté sur un partage réseau et j’ai utilisé DPInst (du Windows Driver Kit) dans un petit script VBS maison. Ce script est lancé automatiquement après le déploiement du poste grâce à sysprep.

Scénario du script :

  1. Monte \\monserveur.mondomaine.lan\drivers en lecteur réseau (partage en lecture seul avec simplement les drivers
  2. Recherche le répertoire du même nom que le “ComputerSystem Model”, que vous pouvez obtenir avec la commande « wmic computersystem get model » (ex : OptiPlex 380)
  3. Copy les drivers en local (car en cas d’installation des drivers de la carte réseau ça coupe…)
  4. Lance de “dpinst.exe” sur le répertoire local
  5. Démonte le lecteur réseau

Noter qu’il faut au minimum que la carte réseau soit reconnu par Windows pour que le script fonctionne.

' David Mercereau - Institut Saint-Dominique de saint-herblain Juin 2014
' Post-déploiement - installation des drivers selon le modèle de machine

''''''''' Déclaration 

On Error Resume Next

Dim objNet, objFso, objLogFile, objShell
Dim tmpObj, tmpItem
Dim SystemName, MakeModel, LocalisationDrivers, LecteurReseau

SystemName = "localhost"
' La localisation des drivers - ne doit pas nécessité d'authentification réseau.-
LocalisationDrivers = "\\monserveur.mondomaine.lan\drivers"
RepertoireTravailLocal = "C:\Windows\DeploiementDrivers"
LecteurReseau = "M"

Set objNet   = CreateObject("Wscript.Network")
Set objFso   = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")

''''''''' Script 

' On monte le lecteur réseau
objNet.MapNetworkDrive LecteurReseau & ":", LocalisationDrivers

' On recherche le modèle 
set tmpObj = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & SystemName & "\root\cimv2").InstancesOf ("Win32_ComputerSystem")
for each tmpItem in tmpObj
	' MakeModel = trim(tmpItem.Manufacturer) & "-" & trim(tmpItem.Model)
	MakeModel = trim(tmpItem.Model)
next
Set tmpObj = Nothing: Set tmpItem = Nothing

If (objFso.FolderExists(LecteurReseau & ":\" & MakeModel)) Then
	' Création du répertoire local
	objFso.CreateFolder RepertoireTravailLocal
	' Copie de dpinst.exe & dpinst.xml
	objShell.Run "cmd /C copy " & LecteurReseau & ":\dpinst* " & RepertoireTravailLocal, 1, true
	' Synchro du répertoire de drivers
	objShell.Run "cmd /C robocopy /S """ & LecteurReseau & ":\" & MakeModel & """ " & RepertoireTravailLocal, 1, true
	' Lancement de l'installation
	objShell.Run "cmd /C c: & cd " & RepertoireTravailLocal & " & dpinst.exe /c", 1, true
	Set objShell = Nothing 
End if

' On démonte le lecteur réseau
objNet.RemoveNetworkDrive LecteurReseau & ":", true, true

Et ça fonctionne au petit oignon !

Liens utiles :

Lampe d’ambiance en chutes de bois de palette

LampeBoisPaletteJ’avais besoin d’une lampe d’ambiance pour le salon & un tas de chutes de bois de palette commence à s’accumuler chez moi. On mélange le tout et on en ressort une petite lampe qui fait son petit effet.

J’ai récupéré le fil électrique & la prise sur un vieil appareil qui ne fonctionnait plus. Donc la lampe ne m’a coûté que le prix de la douille & de l’interrupteur (pas indispensable) c’est à dire ~5€.

Au début j’étais partie pour assembler les éléments à la colle à bois mais ça n’a pas très bien marché. J’ai finalement utilisé les pointes récupérées des palettes précédemment démonté.

Voici quelques photos de l’étape de construction (c’est très simple) :

Fabriquer un awalé

Awalé

Selon Wikipiedia : L’awélé ou awalé est un jeu de société combinatoire abstrait créé en Afrique. C’est le plus répandu des jeux de la famille mancala, ensemble de jeux africains de type « compter et capturer » dans lesquels on distribue des cailloux, graines ou coquillages dans des coupelles ou des trous, parfois creusés à même le sol.

Pour ceux qui ne connaissent pas ce jeu je vous propose de lire les règles du jeu

Il y a de multiple façon de jouer à l’awalé. Vous pouvez vous contenter de creuser 12 troues dans le sable et de trouver 48 cailloux.  Il est aussi possible de jouer dans une boîte d’œuf (idéale en bricolage pour les enfants)… J’ai personnellement voulu l’offrir et j’ai donc souhaité le faire en bois.

Le « plateau » : je me suis très inspiré du site african-concept, qui explique la méthode traditionnelle de fabrication. J’ai récupéré deux petites chutes de bois que j’ai creusé au ciseau à bois puis poncé. J’ai acheté « 3 francs 6 sous » un fermoirs et une charnière pour faire plus propre.

Les pions : le caesalpinia crista (l’arbre d’où provient les graines traditionnellement) ne poussant pas en France. Je me suis rabattu sur des haricots blancs bien français que j’ai vernie. Une autre bonne idée, plus esthétique, aurait été de les faire en pâte à sel.

Sortie de la version 1.0 d’emailPoubelle.php – email jetable auto-hébergeable

nepasjeterEdit (05/01/2014) : prise en compte des commentaires

Vous avez besoin d’un service comme jetable.org, mail-temporaire.fr…  emailPoubelle.php c’est pareil… mais en mieux (parce que « à la maison »)

emailPoubelle.php est donc une page qu’il faut typiquement inclure dans votre site. Elle permet d’administrer des adresses email (des alias plus précisément) jetable ou temporaire. Ces adresses peuvent avoir une durée de vie limitée ou non. Elles peuvent être désactivé (>/dev/null) à tout moment.

Le (petit) projet

Le plus gros changement sur version 1.0 est l’utilisation d’une base de données (sqlite, postgresql, mysql.. au choix, c’est du PDO). Mais vous pouvez continuer à utiliser la version 0.3 qui est en full plain text

Le script dépend de Postfix, un service web avec PHP,  php-pdo et (en option) de la lib pear Net_DNS2

Les fonctionnalités dans leurs grandes lignes :

  • Activer / supprimer / suspendre une adresse email
  • NoScript compatible
  • Multi-base (sqlite, postgresql, mysql.. au choix, c’est du PDO)
  • Multi-domaine compatible
  • Expiration des adresses email possible
  • Ajout d’un commentaire sur l’email poubelle
  • Email blackliste
  • Full UTF-8
  • voir le changelog…

Installation

Télécharger & décompresser les sources :

srv:~$ mkdir -p /www/emailPoubelle
srv:~$ cd /tmp
srv:~$ wget -O emailPoubelle.zip http://forge.zici.fr/p/emailpoubelle-php/source/download/master/
srv:~$ unzip emailPoubelle.zip
srv:~$ cp emailpoubelle-php-master/* /www/emailPoubelle

Configurer apache (d’autres serveur web sont compatibles) pour que le DocumentRoot  pointe dans /www/emailPoubelle/www (dans notre exemple)

Configurer Postfix :

srv:~$ vi /etc/postfix/main.cf
[...]
virtual_alias_maps = hash:/www/emailPoubelle/var/virtual
srv:~$ touch /www/emailPoubelle/var/virtual
srv:~$ postmap /www/emailPoubelle/var/virtual
srv:~$ chown www-data /www/emailPoubelle/var/virtual
srv:~$ chown www-data /www/emailPoubelle/var/virtual.db

Ajouter dans le fichier /etc/aliases le devnull (pour la fonction de suspension de l’adresse email)

srv:~$ echo "devnull:/dev/null" >> /etc/aliases
srv:~$ newaliases

Étagère en palette

Etagère en paletteVoici une petite étagère réalisé rapidement sans clou ni vis.

Il vous faut au minimum 2 palettes :

  • Une que vous couperez simplement en 2 dans le sens inverse des planches. (appelé palette de support)
  • Une autre (ou plus) pour faire les étagères

Les planches des étagées reposes simplement sur les planches horizontales de la palette support.

Les palettes de support ne peuvent pas partir vers l’extérieur, car elle est bloquée par le mur & le bar. Afin qu’elle ne puisse pas partir vers l’intérieur il convient d’usiner une ou deux planches d’étagères afin de maintenir les support écarté (visible près du ballet sur les photos suivantes)

Service web : Un mode maintenance pour bricoler

2ème version de ce « truc », avec support SSL, à découvrir par là : Un mode maintenance avec SSL

By RRZEicons (Cc-sa)
By RRZEicons (Cc-sa)

Afin de réaliser des maintenances sur mon service web (ou les services attenant tel que Mysql) j’ai mis en place un petit mot d’excuse qui dit en substance : « maintenance en cours, merci de repasser plus tard ». C’est mieux que « La connexion a échoué » ou « Can’t Connect to MySQL Server on nian nian nian » non ?

La configuration de prod  :

  • Apache sur le port 80

La configuration de maintenance :

  • Apache sur le port 80 (le même)
  • Lighttpd sur le port 81
  • Iptables redirige le trafic arrivant sur le port 80 vers le port 81 en PREROUTING sauf pour mon IP (ça permet donc de bricoler)

Installation de lighttpd

Apeuté, et ayé :

aptitude -y install lighttpd
update-rc.d lighttpd remove
mkdir /var/www/maintenance
echo "Serveur en maintenance" > /var/www/maintenance/index.html # Vous pouvez faire une belle page html c'est mieux !

Configuration de lighttpd

Éditer le fichier /etc/lighttpd/lighttpd.conf

server.modules = (
	"mod_access",
)

server.document-root        = "/var/www/maintenance"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 81
server.error-handler-404    = "/index.html"

index-file.names            = ( "index.html", "index.lighttpd.html" )

include_shell "/usr/share/lighttpd/create-mime.assign.pl"

Il est certainement possible de faire plus propre sur ce point. Actuellement je gère le message dans le index.html que je met dans le error404. Des redirection 302 quelque soit l’URL serait à envisager.

Maintenance On/Off

Pour se mettre en mode maintenance :

# Démarrage du serveur d'excuse
service lighttpd start
# Redirection du port 80 vers 81 sauf pour mon IP
iptables -A INPUT -p tcp --dport 81 -j ACCEPT
iptables -t nat -A PREROUTING \! -s ${IPMAISONDEMOI} -p tcp --dport 80 -j DNAT --to-destination ${IPDUSERVEUR}:81
iptables -t nat -A POSTROUTING -j MASQUERADE

Et pour désactiver le mode maintenance :

# Si vous n'avez pas d'autres règles (c'est mal) :
iptables -F
iptables -t nat -F
# Sinon redémarrer votre service iptables 
# Lighttpd n'est plus utile
service lighttpd stop

Si vous avez des suggestions…

[ispconfig] Managesieve (dovecot) & Horde

sieve.infoDes dires de Wikipedia : « Sieve est un langage de filtrage du courrier électronique. Il est normalisé dans le RFC 5228. Sieve permet de filtrer sur les en-têtes d’un message qui suit le format du RFC 5322, c’est-à-dire un message Internet typique.  »

Sieve c’est très pratique car le filtrage du courrier est effectué au niveau du serveur dès la réception de l’email. Ce qui est presque indispensable quand on utilise plusieurs clients de messagerie (web &/ou desktop). Je vais donc utiliser Managesieve (qui est la partie serveur du protocole) pour Dovecot (projet Pigeonhole).

Actuellement le panel ISPconfig me permet d’éditer les filtres Sieve mais n’utilise pas Managesieve. ISPconfig stock en base (table mail_user_filter) et écrase le fichier à chaque modification.

Je ne souhaite plus passer par ISPconfig pour modifier mes filtres, mais directement par Horde (via Ingo) ou Roundcube (plugin) ou encore par thunderbird (plugin) selon mes besoins.

Installation de Managesieve

Rien de plus simple :

aptitude install dovecot-managesieved

Modifier le fichier /etc/dovecot/dovecot.conf :

< protocols = imap
> protocols = imap sieve

Puis redémarrer le service, le port 4190 doit ensuite être à l’écoute :

$ service dovecot restart
$ netstat -pnat | grep 4190
tcp        0      0 0.0.0.0:4190            0.0.0.0:*               LISTEN      11111/dovecot

Horde (ingo) & Sieve

Il vous suffit de modifier le fichier ingo/config/backends.php de votre instance horde de la façon suivante :

[...]
/* IMAP Example */
$backends['imap'] = array(
    // ENABLED by default
<    'disabled' => false,
>    'disabled' => true,
    'transport' => array(
        Ingo::RULE_ALL => array(
            'driver' => 'null',
            'params' => array(),
        ),
    ),
[...]
$backends['sieve'] = array(
    // Disabled by default
<    'disabled' => true,
>    'disabled' => false,
    'transport' => array(
        Ingo::RULE_ALL => array(
            'driver' => 'timsieved',
            'params' => array(
                // Hostname of the timsieved server
                'hostspec' => 'localhost',
                // Login type of the server
                'logintype' => 'PLAIN',
                // Enable/disable TLS encryption
                'usetls' => false,
                // Port number of the timsieved server
                'port' => 4190,
                // Name of the sieve script
<                'scriptname' => 'ingo',
>                'scriptname' => 'filtres',
                // Enable debugging. The sieve protocol communication is logged
[...]

Ne faites (peut être) pas ça chez vous

En effet ça ne s’avère pas être forcément la meilleure des solutions :

  • Il n’est apparemment pas possible d’importer des scripts existants.
  • Plus embêtant il s’avère que Horde fonctionne presque de la même façon qu’ISPconfig. A savoir qu’il stock en base les filtres et écrase le script sieve (via managesieve quand même) Ce qui me condamne à n’utilise qu’une interface (horde) pour modifier mes filtres :’-(

Bon je m’en contente, il est toujours plus agréable de modifier ses filtres via son webmail (horde) que via le panel ISPconfig.

En continuant à utiliser le site, vous acceptez l’utilisation des cookies (au chocolat) Plus d’informations

Les cookies sont utilisés à des fin de statistique de visite du blog sur une plateforme indépendante que j'héberge moi même. Les statistiques sot faites avec un logiciel libre. Aucune information n'est redistribué à google ou autre. Je suis seul autorisé à lire ces informations

Fermer