serveur
Tutoriel lotp: VMware Workstation – Windows Server 2008R2 en cluster
3Je viens de faire un tutoriel sur la mise en oeuvre d’un cluster Windows Server 2008 R2 dans VMware Workstation.
La partie sensible est la réservation persistante scsi-3 impérative depuis Windows Server 2008.
J’ai poste le tutoriel sur screencast: http://www.screencast.com/t/R7ndyktfNXk

pour les adeptes de Youtube, je l’ai posté aussi (mais qualité inférieure):
Popularity: 49% [?]
Est-ce que vos serveurs/stations sont sous garantie ?
1Il y a certains contextes où l’on ne dispose pas de cette information. Le parc en question est composé de serveurs Dell et HP. Ces deux fabricants proposent de vérifier cette information sans problème, mais seulement de façon unitaire (par 10 pour HP, mais pour un même numéro de produit). Un appel au support Gold donne le même résultat pour les deux, ils ne proposent pas d’autres moyens, et le support eux mêmes utilisent ces pages.
Pour Dell: http://support.euro.dell.com/support/topics/topic.aspx/emea/shared/support/my_systems_info/fr/details?c=fr&l=fr&s=gen
Pour HP: http://www13.itrc.hp.com/service/ewarranty/warrantyResults.do
Quand on a quelques serveurs ou stations, cela ne pose pas de problème. Mais quand il s’agit de vérifier 230 machines, cela se complique!
1/Récupérer les numéros de série des serveurs/stations
La première étape consiste à avoir la liste des machines où récupérer le numéro de série, par exemple depuis l’active directory avec Adfind.
J’ai crée le vbscript suivant, qui prend en argument un nom de serveur, et renvoi une ligne formatée pour un CSV, avec plusieurs informations dont l’asset tag HP ou Dell. Par exemple:
ServeurA;Dell Computer Corporation;PowerEdge 1850;SerialIci;;2;x86 Family 15 Model 4 Stepping 1;3220455424; ServeurB;HP;ProLiant DL360 G5;SerialIci;;4;x86 Family 6 Model 23 Stepping 10;3487408128;
Le code VBScript:
-------------------------------------------------------------------------------------
Dim hostname,manufacturer,model,serial,assettag
Set objArgs = WScript.Arguments
strComputer = objArgs(0)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colSettings = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
For Each objComputer in colSettings
hostname= objComputer.Name
manufacturer=objComputer.Manufacturer
model=objComputer.Model
memory= objComputer.TotalPhysicalMemory
cpucount= objComputer.NumberOfProcessors
Next
Set colSettings = objWMIService.ExecQuery _
("SELECT * FROM Win32_Processor")
For Each objProcessor in colSettings
cputype=objProcessor.Description
Next
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_BIOS",,48)
For Each objItem in colItems
serial=objItem.SerialNumber
Next
wscript.echo hostname & ";" & manufacturer & ";" & model & ";" & serial & ";" & assettag & ";" & cpucount & ";" & cputype & ";" & memory & ";"
-------------------------------------------------------------------------------------
Il reste ensuite a appeler ce script par machine:
for /f %s in (serveurs.txt) do cscript //NOLOGO serial.vbs %s >> serveurs.csv
2/Vérifier les garanties
On a donc maintenant un fichier CSV avec notamment le fameux serial par machine. Le reste va devenir un peu plus « artisanal », car on va:
- Construire l’URL a appelé pour chacun des fabricants (avec le numéro de série en paramètre)
- Récupérer la page Web (résultat de la recherche) en html avec wget. (Une page html par machine, le fichier ayant comme nom le numéro de série)
- Parser les pages pour récupérer uniquement la date d’achat et fin de garantie.
Les étapes unitaires ne sont pas techniquement compliquée, mais nécessite un peu de temps. Plus on a de machines à vérifier, plus cela devient intéressant en terme de temps. D’autre part, on progresse toujours plus en prenant ce chemin qu’en faisant la même tâche 230 fois…
A/Construire les adresses
Une fois le fichier excel importé, on va utiliser les fonctions Excel (en anglais) pour créer l’url des pages. Cela suppose que les numéros de séries sont dans la colonne E.
Pour Dell:
=CONCATENATE("wget -F -O ";E3;" ""http://support.euro.dell.com/support/topics/topic.aspx/emea/shared/support/my_systems_info/fr/details?c=fr&l=fr&s=gen&~ck=anavml&servicetag=";E3;"""")
Le résultat est de la forme:
wget -F -O YYYYY "http://support.euro.dell.com/support/topics/topic.aspx/emea/shared/support/my_systems_info/fr/details?c=fr&l=fr&s=gen&~ck=anavml&servicetag=YYYYYY"
Pour HP:
=CONCATENATE("wget -F -O ";E3;" --post-data=""BODServiceID=NA&RegisteredPurchaseDate=&country=FR&productNumber=AAAAAA-AA&serialNumber2=&serialNumber3=&serialNumber4=&serialNumber5=&serialNumber6=&serialNumber7=&serialNumber8=&serialNumber9=&serialNumber10=&x=31&y=12&serialNumber1=";E3;"""";" http://www13.itrc.hp.com/service/ewarranty/warrantyResults.do")
Il faut remplacer AAAAAA-AA par le product part.
Le résultat est de la forme:
wget -F -O YYYYYY --post-data="BODServiceID=NA&RegisteredPurchaseDate=&country=FR&productNumber=AAAAAA-AA&serialNumber2=&serialNumber3=&serialNumber4=&serialNumber5=&serialNumber6=&serialNumber7=&serialNumber8=&serialNumber9=&serialNumber10=&x=31&y=12&serialNumber1=YYYYYYYY"http://www13.itrc.hp.com/service/ewarranty/warrantyResults.do
B/Récupérer les pages Web
Il suffit de copier/coller le résultat des concaténations dans un .bat. Wget pour Windows est téléchargeable ici par exemple.
Le répertoire courant du .bat se rempli de fichiers portant comme nom chaque numéro de série.
Vous devez d’abord faire tous les Dell puis tous les HP afin de séparer les fichiers.
C/Parser les pages Web
J’ai commencé l’informatique sur Unix/Linux. Pour se qui est de parser des fichiers textes, j’ai gardé mes habitudes sed/awk/grep. Pour faire cela, j’utilise Cygwin sur Windows, qui est gratuit.
Parser les pages HTML pour Dell:
for serial in $(ls -1);do
achat=`cat $serial | awk '{FS="</table>";print $2}' | awk '{FS="<td";print $7}' | grep class | cut -d'>' -f2 | cut -d'<' -f1`
garantie=`cat $serial | awk '{FS="contract_oddrow\">";print $5}' | cut -d'<' -f1 | grep "/"`
echo "$serial ; $achat ; $garantie" >>dell_output.csv
done
Parser les pages HTML pour HP:
for serial in $(ls -1);do
achat=`cat $serial | sed "s/[\t]//g" | grep '^[0-9]\{2\}' | head -1`
garantie=`cat $serial | sed "s/[\t]//g" | grep '^[0-9]\{2\}' | head -2 | tail -1`
echo "$serial ; $achat ; $garantie" >> hp_output.txt
done
Il ne reste plus qu’à faire le rapprochement via les numéros de séries dans Excel
Popularity: 8% [?]
Tips and tricks du moment
0Voici quelques commandes que j’ai utilisé cette semaine…Puisque cela m’a aidé, peut être que cela vous aidera aussi !
Besoin: connaître les utilisateurs qui n’utilisent pas le mode mise en cache de outlook.
Solution: Exchange 2007 possède un cmdlet PowerShell qui correspond tout à fait:
Get-LogonStatistics -server MonServeurExchange | where {$_.ClientMode -eq "Classic"} |FL ClientName
Besoin: Collecter les adresses IP assignées aux serveurs.
Solution:
- Créer un fichier texte contenant un nom de serveur par ligne, par exemple en récupérant tous les objets AD ayant pour OS « Windows Servers » via adfind
- Utiliser PowerShell + psexec pour récupérer le résultat de ipconfig /all sur chaque serveur
Le « script » powershell est le suivant:
———————————————————————————————-
get-content servers.txt | foreach-object {
$server=$_
$ip=.\psexec \\$server ipconfig /all| where { $_ -match "IP Address"} | %{$_ -replace "IP Address. . . . . . . . . . . . : ","$server;"}
Write-Output $ip >> servers_ipconfig.txt
}
- On récupère les informations en « live » sans reposer sur des relevés pouvant être obsolètes
- Tout es ramassé, IP via NLB, carte réseau privée (heartbeat…), ip d’un tunnel VPN…
- psexec permet de spécifier un login/pass quand on est hors domaine
- Elle ne nécessite aucun agent sur les serveurs (SCCM, Altiris…)
for /f %s in (servers.txt) do echo %s >>ipall.txt && psexec \\%s ipconfig /all | findstr "Address" | findstr "IP" >> ipall.txt
Popularity: 4% [?]
Lenteurs SharePoint 2007
1J’ai été récemment confronté par deux fois à d’importantes lenteurs sous SharePoint 2007:
- Lors du premier appel suite à recyclage de l’application pool: 2 minutes pour avoir la page
- Lors de la recherche d’une personne dans l’AD : au moins 30 secondes
2 minutes lors du premier appel
IIS essaye de contacter crl.microsoft.com en http, mais n’y arrive pas. Ceci afin de vérifier la signature des assembly dans le GAC .Net. Les symptômes ainsi que des solutions sont proposées sur ce blog:
http://www.muhimbi.com/blog/2009/04/new-approach-to-solve-sharepoints.html
J’ai choisi la méthode suivante:
- Téléchargement des CRL:
- Ajout des CRL au magasin:
- certutil -addstore CA CodeSignPCA.crl
- certutil -addstore CA CodeSignPCA2.crl
Et voilà, on passe à environ 20 secondes, ce qui est « normal » dans la mesure où il doit compiler. Vous pouvez aller encore plus loin en:
- changeant l’heure par défaut de recyclage de l’application pool
- Utiliser SPWakeUp, pour « chauffer » le moteur SharePoint en appelant chaque site
Recherche dans l’AD : au moins 30 secondes
Symptômes: vous essayez d’autoriser un utilisateur, un groupe, ou juste assigner une tâche à quelqu’un, cela prends au moins 30 secondes au lieu d’une seconde en général. Je parle ici du temps entre le moment où l’on clique sur la recherche et le moment où le nom est souligné (donc validé).
Analyse du problème: dans mon cas, en traçant l’activité réseau du serveur, on se rend compte qu’il essaye de contacter en vain des contrôleurs de domaines d’une autre forêt en vain au même moment à plusieurs reprise. Cette tentative de connexion est dûe à l’ajout d’une autre forêt via stsadm pour la propriété peoplepicker. Par défaut, SharePoint ne cherche des utilisateurs que dans le domaine où il est. Pour étendre la recherche à d’autre domaines/forêt, il faut les ajouter avec cette commande:
stsadm -o setproperty -url http://SharePointSite:85 -pn peoplepicker-searchadforests –pv “domain1.com”,<loginname1>,<password1>;”domain2.com”,<loginname2>,<password2>
S’il y a une relation d’approbation entre les forêts, il n’y a pas besoin de spécifier un login et un mot de passe.
Voici un post plus détaillé sur le sujet: http://www.gk.id.au/2009/04/people-picker-sharepoint-and-forest.html
Solution: Autoriser les serveurs SharePoint à se connecter aux contrôleurs de domaines de la forêt ciblée. Le port à ouvrir est ldap (389) à la fois en TCP et UDP.
Et voilà, la recherche prend de nouveau environ une seconde et on peut maintenant aussi chercher des utilisateurs de l’autre forêt!
Popularity: 5% [?]
MDM 2008: plus complexe que de prime abord
0Comme de plus en plus de produits Microsoft (et autres éditeurs), les solutions tendent à être de plus en plus complexe. Il a beau faire partie de la gamme « System Center » de Microsoft, il quelques singularités auxquelles je me suis frotté récemment. Installé avant mon arrivé, on a souhaité déplacer les bases de données associées au produit d’un serveur SQL à un autre.
1er challenge: où est stocké le nom du serveur SQL ?
Recherche dans la base de registre (comme SCOM) ? rien
Recherche dans les fichiers dans le répertoire d’installation ? rien
Il stocke l’information dans Active Directory (un SCP / Service Connection Point). Un petit coup d’adsiedit plus tard, il pointe sur le nouveau serveur SQL
Ce point est évoqué dans un article Technet lors de la restauration des bases
2ème challenge: SQL
L’équipe du produit utilise pleinement SQL Server, notamment:
- L’encryption des données via la clé de l’instance (Service Master Key)
- Job via l’agent SQL
Cela me semble assez « riche » pour ce type de solutions, mais bon… Vous l’avez compris, il faut sauvegarder et restaurer la clé d’encryption de l’instance de l’ancien serveur SQL…
Pour rappel, les bases SQL pour MDM portent les noms suivants:
- AdminServices
- MobileEnrollment
- TEEDB
- SUSDB
La documentation Microsoft du produit: http://technet.microsoft.com/en-us/scmdm/cc304592.aspx
Popularity: 3% [?]
Réinitialiser le mot de passe admin de domaine sur un DC Windows 2008 avec seulement le DVD d’installation
5Bon, tout est dans le titre
Je n’ai pas utilisé mes VM de labo pendant quelque temps juste après les avoir installées..Et voilà que je ne me rappel plus du mot de passe administrateur du domaine… Plutôt que de réinstaller, j’ai trouvé un hack pour Vista , que j’ai réutilisé pour mon DC Windows Server 2008 ! J’ai juste poussé un peu plus loin en utilisant le DVD officiel d’installation de Windows Server 2008 au lieu de backtrack
Pour les allergiques ou trop pressé pour regarder la vidéo pas à pas, voici ce qu’il faut faire:
- Démarrer sur le DVD d’installation de Windows Server 2008
- Choisir « Réparer votre ordinateur »
- Lancer une cmd
- Aller dans c:\windows\system32
- renommer Utilman.exe en Utilman.exe.bak
- Copier cmd.exe en Utilman.exe
- redémarrer sur Windows
- Faire le raccourci clavier Windows + U devant la fenêtre de logon (lance normalement utilman.exe et donc là cmd.exe)
- net user administrateur Nouveaumotdepasse123
- Se logguer avec le compte administrateur du domaine
- changer le mot de passe
- Redémarrer sur le DVD pour remettre le fichier original Utilman.exe
Popularity: 34% [?]
OpsMgr/Scom: erreur 2130771918 sur tous les ports TCP et applications Web
0Suite à l’installation avec erreurs d’un hotfix Microsoft Scom, les supervisions de type TCP Port et Application Web ne fonctionnaient plus, avec toujours le même code d’erreur 2130771918. Par exemple le test du port scom 5723 sur lui même échouait:

erreur scom sur n'importe quel port TCP
Après l’ouverture d’un ticket au support MS, ils nous ont fourni le patch de la KB 957511. Cette KB ne concerne pas notre problème, mais elle contient une version supérieure de la DLL Momnetworkmodules.dll, qui fait les tests TCP et application Web. Une fois cette DLL mise à jour, le problème est résolu.
Par ailleurs, il aurait pu être nécessaire d’enregistrer de nouveau la DLL avec:
regsvr32 « c:\program files\system center operations manager 2007\momnetworkmodules.dll »
Popularity: 8% [?]
Database Tuning Engine Advisor
2Je viens d’apprendre deux choses avec le MS SQL 2005 Database Tuning Engine Advisor à mes dépends.
Je vais donc les partager avec vous afin que cela ne vous arrive pas! Le contexte: Je ne m’occupe pas en général de SQL 2005 (ou m’occupais pas jusqu’à présent). Ayant un problème de perf important sur une de nos futures applications, j’ai utilisé SQL Profiler pour capturer l’activité, et j’ai voulu ensuite utiliser DTA pour savoir s’il manquait des index. Mais je suis allé trop vite, et je n’ai donc pas compris que DTA ne pouvait pas utiliser la trace.
Lorsque vous donnez un fichier trace à DTA, vous pouvez lui spécifier la base de workload, et la ou les bases à optimiser. Je pensais bien faire en sélectionnant la base « tune » comme base de workload. J’ai bien vu quelques erreur après l’analyse sur des requêtes, mais rien n’indiquait un problème majeur:
[Microsoft][SQL Native Client][SQL Server]Could not find stored procedure XX.P_TM_XXXXXXXXXXXXXXXX’.
Ce message est dû au fait que la trace ne contient pas de « use my_database » avant l’appel aux procédures stockées. DTA ne trouve donc aucune procédure stockée, et n’analyse donc rien les concernants. Ca m’étonnait qu’il ne trouve aucun index ni stats à créer, mais je ne savais pas l’expliquer. Pour palier à cela, il faut donc choisir la base où sont ces procédures stockées ou jouées les requêtes en tant que base de workload.
Une fois ce message d’erreur passé, j’en ai eu un deuxième,car les problèmes viennent toujours à plusieurs:
[Microsoft][SQL Native Client][SQL Server]SHOWPLAN permission denied in database ‘XXXXX’.
Celui-là est un peu différent. Si la trace contient la colonne LoginName ou NTUserName, DTA rejoue les requêtes avec ce ou ces comptes, qui doivent donc avoir les droits de faire un showplan. Pour palier à ce problème sans donner ce droit, vous pouvez ouvrir la trace, supprimer ces colonnes, et enregistrer la trace sous un autre nom, le temps de jouer DTA. Ainsi il utilisera le compte avec lequel vous l’exécuter pour analyser les requêtes
Et voilà, maintenant il me propose l’ajout de 50 index, 125 statistiques pour une estimation de +50% en perf!!
Popularity: 19% [?]
Masterisation de serveurs: Dell OpenManage Deployment Toolkit
0Dell propose une solution gratuite de masterisation de serveurs basée sur WinPE ou Linux au choix
L’outil ne paye pas de mine à premier abord (que des .exe et bat, pas d’interface graphique accueillante).
Cependant, tout le nécessaire est là pour:
- Déployer un windows de façon automatisée (y compris Windows 2008)
- Ajouter des pilotes, notamment de stockage de masse
- Injecter des pilotes pour un déploiement sur du matériel différent.
Documentation (User guide): http://support.dell.com/support/edocs/software/dtk/
Téléchargement de Dell OpenManage Deployment Toolkit:
Popularity: 16% [?]
Vers une DSI++: Green IT
4Je ne sais pas si c’est seulement une tendance qui « fait bien« , ou une (r)évolution de fond, auquel cas EDF pourrait se préparer à une migraine… Heureusement pour eux, les Moyens Généraux et les DSI se causent pas trop à priori. La facture EDF est valable pour tout l’immeuble, difficile d’isoler la part des vilains PC allumés la nuit, ou bien cette HP 9050 ici et là qui s’endort jamais. La question est: combien de DSI sont allées plus loin que les quelques rudiments faciles à mettre en œuvre ?
Voici mon petit tour d’horizon sur le sujet, avec certains ++ pas facile à avoir
Les stations de travail
- Eteindre les PC le soir et les allumer le matin avec WOL.
- L’outil de distribution est capable d’allumer les stations et les arrêter à la fin.
- La gestion de l’énergie sur les PC est gérée en central via EZ GPO sous XP, et par GPO native sous Vista. Le minimum étant d’éteindre l’écran rapidement
La salle machine
- Les nouveaux serveurs utilisent des processeurs basse consommation, de préférence dans des lames.
- Le câblage est correctement fait afin de laisser passer l’air frais.
- Une analyse calorifique de la salle machine indique que l’air circule correctement…(Bonus x4 ++ si vous avez ce genre d’analyse ci-dessous!)

- Les serveurs inutiles sont éteints automatiquement le soir quand ils ne sont pas utiles la nuit, notamment les serveurs de pré production/qualification
- Les ressources des serveurs sont utilisées à 80%, sinon ils sont mutualisés ou virtualisés.
- L’extinction incendie ne pollue évidemment pas l’environnement.
Réduire les impressions
- Les fax arrivent et partent en mail/PDF, et ne sont donc pas imprimés.
- Les imprimantes:
- Sont en mode recto/verso par défaut uniquement, l’utilisateur doit manuellement changer la configuration pour imprimer uniquement en recto par impression
- Elles se mettent en veille après 1 heure d’inactivité
- En interne, des workflows numériques remplacent le courrier interne papier.
- Vers l’externe:
- Les Appels D’offres et autres sont déposés sur une plateforme au format numérique
- Les applications peuvent envoyer des documents signés numériquement aux clients et ainsi ne plus les imprimer et mettre sous pli
Popularity: 19% [?]
J’ai traduis PowerGUI en Français !
0Comme indiqué sur le blog de Dmitry, j’ai traduis en Français l’interface de PowerGUI. Il s’agit à la fois d’un IDE pour PowerShell, est une console à modeler soit en même en PowerShell
Le pack français est téléchargeable ici:
http://powergui.org/entry!default.jspa?categoryID=270&externalID=1961
Popularity: 18% [?]
Gérer les GPO depuis un VISTA SP1
0Si vous souhaitez gérer vos GPO depuis un PC sous Vista SP1, je vous recommande d’utiliser le pack RSAT de Microsoft:
Microsoft Remote Server Administration Tools for Windows Vista (KB941314)
Ce pack est initiallement prévu pour gérer du Windows 2008, mais cela fonctionne avec du 2003 aussi
Une fois installé, il faut activer les features:
Popularity: 33% [?]
Demandez pourquoi vos admins vont sur les serveurs
1Je suis tombé sur une question intéressante dans les newsgroups: Demander pourquoi aux admins pourquoi ils ouvrent une session sur un serveur. La personne aurait voulut le faire par GPO, mais cela n’est pas possible. Son objectif était d’avoir quelque chose de similaire au formulaire que windows 2003 affiche quand on veut redémarrer & co.
J’ai donc écrit un petit script VBS qui pose la question et enregistre la réponse dans l’eventlog application:
‘==========================================================================‘
‘
‘ NAME: <logger.vbs>
‘
‘ AUTHOR: Mathieu CHATEAU, gollum123@free.fr
‘ DATE : 11/10/2007
‘
‘ COMMENT: <Ask a reason for logging, then keep a trace in Application eventlog>
‘
‘==========================================================================
option explicit
Dim msg, objshell,UserName
Const EVENT_SUCCESS = 0
Set objShell = Wscript.CreateObject(« Wscript.Shell »)
UserName = objShell.ExpandEnvironmentStrings(« %username% ») msg = InputBox(« Pourquoi ouvrez-vous une session? »)
if msg = « » then
msg= »a refuse de dire pourquoi »
end if
objShell.LogEvent EVENT_SUCCESS, UserName & » a ouvert une session car: » & msg
Set objShell = Nothing
Popularity: 23% [?]
Détecter les versions de SSL acceptées par un serveur web
0Il est parfois utile de vérifier quelles versions du protocole SSL sont acceptées par un serveur Web. Les anciennes versions sont considérées faibles et peuvent permettre des attaques de l’homme du milieu & co.
Une possibilité est d’utiliser openSSL, notamment la version pour Windows:
La syntaxe est de la forme:
openssl s_client -connect www.google.fr:443
Par défaut, il négociera la meilleure version. Pour forcer le SSLV2:
openssl s_client -connect www.google.fr:443 -ssl2
Ou au contraire le SSLV3:
openssl s_client -connect www.google.fr:443 -ssl3
Une autre chose intéressante, les ciphers autorisés:
—
Ciphers common between both SSL endpoints:
RC4-MD5 EXP-RC4-MD5 RC2-CBC-MD5
EXP-RC2-CBC-MD5 DES-CBC-MD5 DES-CBC3-MD5
—
SSL handshake has read 1004 bytes and written 239 bytes
—
New, SSLv2, Cipher is DES-CBC3-MD5
Server public key is 1024 bit
Compression: NONE
Popularity: 18% [?]

