Category Archives: Administration Systèmes

  • -

Série : SCVMM

Dans quelques semaines une série d'articles ayant pour but de documenter l'utilisation de SCVMM (System Center Virtual Machine Manager) sera disponible.

En attendant voici le contexte qui sera exposé :

Matériel :

  • 1 Contrôleur de Domaine
  • 1 Serveur SCVMM
  • 4 Hyperviseurs
  • 1 SAN
  • 1 NAS

Problématique:

L'utilisation des équipements sera à visée éducative. En effet le but étant que des étudiants puissent créer, gérer, supprimer leurs Machines Virtuelles au travers de SCVMM.

Plusieurs points seront alors abordés :

  • Configuration Réseau
  • Interfaçage des Comptes utilisateurs Active Directory avec SCVMM
  • Gestion des droits des utilisateurs
  • Création des Clouds par classes
  • Création des Templates
  • Gestion du Basculement des VM sur les Hyperviseurs
  • Gestion de la sauvegardes des VM sur un NAS (pas encore réalisé)


  • 0

Installation du Client APCUPSD sur un Nas QNAP

APCUPSD est un outil qui permet de gérer via le réseau un onduleur qui ne peut être géré qu'en USB.

Pour voir comment monter son serveur APCUPSD, vous pouvez consulter l'article suivant : "Installation d'un serveur APCUPSD"

Dans cet article nous allons décrire comment installer et configurer un client en mode "esclave" sur un NAS QNAP.


I – Téléchargement de APCUPSD

1.      Entware-NG

Le système d’exploitation de QNAP n’intègre pas la commande APT. De ce fait si vous exécutez la commande suivante : « apt-get install apcupsd », le système vous répondra alors : « command not found ».

Pour pallier à ceci il est nécessaire d’installer l’application « Entware-ng » qui vous permettra de remplacer la commande APT.

A – Télécharger Entwar-NG.pkg.

Télécharger le fichier « entware-ng.pkg » grâce au lien suivant :

https://github.com/Entware/Entware-ng/wiki/Install-on-QNAP-NAS

B – Installation sur le NAS.

Connectez-vous à l'interface d'administration web de votre Nas QNAP.

Interface d'administration du NAS

Ouvrez l’application « App Center » et cliquer sur l’icône « Installer une application manuellement »

La boite de dialogue s’ouvre alors. Cliquez alors sur « Parcourir » pour uploader sur le Nas l’application. Cliquez ensuite sur « installer »

Une fois l’installation terminée, l’application apparait alors dans « App Center »

C – Connexion au NAS en SSH avec Putty.

Nous utiliseront l'utilitaire Putty pour pouvoir accéder au NAS en SSH, à noter que vous pouvez utiliser d'autre programmes, ou bien votre terminal pour réaliser les mêmes opérations.

Renseigner l’adresse IP du serveur Nas


2.    Installation du Paquet APCUPSD en shell

Sur la console saisissez les commandes suivantes (attention à bien respecter l’ordre)

#accéder à la racine du serveur
cd /
# mise à jour des dépôts
opkg update
# Installation de APCUPSD
opkg install apcupsd 
# Retour à la racine du serveur 
cd /
# Recherche de tous les fichiers/répertoires qui portent le nom 
# « Apcupsd »
find . | fgrep apcupsd

Le temps de la résolution de la commande «  find . | fgrep apcupsd » peut être un peu long. En effet le système parcours alors tous les répertoires de votre serveur NAS. Soyez patient...

 Voici le résultat que vous devez obtenir :

[~] # cd /
[/] # find . | fgrep apcupsd
./usr/local/sbin/apcupsd
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/etc/init.d/S17apcupsd
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/etc/apcupsd
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/etc/apcupsd/apccontrol
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/etc/apcupsd/apcupsd.conf
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/etc/apcupsd/apcupsd_mail.conf
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/etc/apcupsd/changeme
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/etc/apcupsd/commfailure
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/etc/apcupsd/commok
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/etc/apcupsd/offbattery
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/etc/apcupsd/onbattery
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/lib/opkg/info/apcupsd.conffiles
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/lib/opkg/info/apcupsd.control
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/lib/opkg/info/apcupsd.list
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/sbin/apcupsd
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/var/log/apcupsd.events
./share/CACHEDEV1_DATA/.qpkg/Entware-ng/var/run/apcupsd.pid

3.    Configuration de APCUPSD en Mode « Esclave ».

Nous allons maintenant signifier à APCUPSD qu’il doit être exécuté en mode « Slave » et donc interroger le serveur.

#Editez le fichier « apcupsd.conf3
nano ./share/CACHEDEV1_DATA/.qpkg/Entware-ng/etc/apcupsd/apcupsd.conf

Modifiez alors les valeurs comme ceci:

UPSNAME ups1
UPSCABLE ether
UPSTYPE net
DEVICE IP_SERVEUR_APCUPSD:3551
POLLTIME 10
BATTERYLEVEL 60
MINUTES 60
TIMEOUT 900
NETSERVER on
NISIP 0.0.0.0

Redémarrez le service apcupsd

/opt/sbin/apcupsd &

3.1 Test de communication client/serveur

Nous allons maintenant tester la bonne connexion entre le client (NAS) et le serveur (RASPBERRY). Pour cela exécutez la commande suivante. Cette dernière permettra d’interroger le serveur APCUPSD et de communiquer au client les informations sur l’onduleur.

apacaccess status
Résultat de la commande "apaccess status"

Enfin sur votre navigateur web, saisisez l’adresse du serveur APCUPS.

Dans mon cas : " https://IP_DU_SERVEUR_APCUPSD/cgi-bin/apcupsd/multimon.cgi "

Vous pouvez alors contrôler la bonne liaison entre les deux hôtes :


  • 0

Script de Création de Signatures

Dans les entreprises ou les établissements, les utilisateurs ont en leur possession une boite mail professionnelle et une signature électronique doit être apposée en bas de chaque mail.

Exemple de signature à mettre en place

Seulement la problématique est de créer et diffuser les signatures aux utilisateurs. Pour cela certain éditeurs d'applications ont mis en place des logiciels qui viennent en complément de votre messagerie, gérer ses signatures. La gestion est donc facilitée, cependant le coût d'achat de ces applications sont généralement un freins au déploiement de la solution. De ce fait certains Etablissements ne peuvent pas utiliser cette solution.

Pour répondre à ce besoin, j'ai imaginé un script qui pourrait créer un grand nombre de signatures et qui les enverrait par mail aux utilisateurs. Pour cela nous utiliserons le langage PowerShell.

Sommaire :

1 - Création du modèle de signature en HTML

2 - Récupération des identités d'un CSV

3 - Création de la signature HTML

4 - Envoi aux utilisateurs

5 - Téléchargement du Script

I - Création du Model HTML de la signature

Pour commencer nous devons créer le modèle, le Template de notre signature mail. Je vous conseil un générateur en ligne qui est assez bien fait, il s'agit de Free Mail Signature Générator.

Une fois le modèle créer, télécharger le puis insérer le code HTML dans un fichier .html à l'aide de l'outil Notepad.

II - Récupération des données d'un CSV

Le but est de récupérer les identités des utilisateurs d'un fichier CSV. Dans un premier temps je cible le fichier CSV qui porte le nom "liste-personnel-signature.csv" grâce à la fonction GetContent -Path.

La variable $idesignature récupère les données du fichier CSV.

La boucle foreach permet quant à elle permet de parcourir toutes les entrées de notre fichier csv.

# Récupération des identites dans le fichier CSV "liste.csv"
# Conversion du CSV en txt pour récupérer les caractères spéciaux

Get-Content -Path ".\liste-personnel-signature.csv" | Out-File -FilePath ".\Signatures-HTML\liste-personnel-signature_import-unicode.txt" -Encoding Unicode
$idsignature = Import-csv -Path ".\Signatures-HTML\liste-personnel-signature_import-unicode.txt" -Delimiter ";"
foreach ($item in $idsignature) 
{ 

    $Identite = $item.Prenom + " " + $item.Nom
    $Fonction = $item.Fonction
    $NumTel = $item.NumTel
    $NumInt = $item.NumInt
      $Mail = $item.Mail

Création de la signature HTML

Nous avons à présent parcourut notre fichier CSV et avons récupéré dans le contenu de chaque colonnes dans les variable.

Cependant nous allons devoirs encoder nos chaines de caractères de manière à accepter et afficher les caractères spéciaux tels que "ç" ou encore "É". Nous utiliserons alors la fonction "System.Web.HttpUtility".

#---------------------------- ENCODAGE HTML ---------------------------
$IdentiteConvert = [System.Web.HttpUtility]::HtmlEncode($Identite)
$FonctionConvert = [System.Web.HttpUtility]::HtmlEncode($Fonction)

A présent nous allons récupérer notre code HTML de la signature puis nous allons l'ajouter à notre script powershell. Pour cela voici comment procéder:

Dans un premier temps nous allons créer un fichier qui porte le nom de l'utilisateur: "$fichier_html". Puis nous allons écrire dans ce dernier le code HTML de la signature dans la varible "$html_var".

# -------------------- GENRATION DU FICHIER HTML --------------------
#Creation du fichier HTML 
$fichier_html = ".\Signatures-HTML\Signature_$Identite.html"
$html_var =  @"
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Signature Ozenne</title>

L'exemple précédent ne comporte par tout le code HTML afin de simplifier les explications

Ensuite il faut adapter votre code HTML de manière à transformer les chaines de caractère en variable. Par exemple ici l’affichage du nom et du prénom de l'utilisateur.

<tr style="box-sizing: border-box;">
                  <td style="box-sizing: border-box; padding: 0px; font-size: 12pt; font-family: Arial, sans-serif; font-weight: bold; color: rgb(61, 60, 63);"><span

                      class="ng-binding" style="box-sizing: border-box; font-family: Verdana, sans-serif; color: rgb(61, 60, 63);">$IdentiteConvert</span></td>
                </tr>

Enfin nous terminons notre l'intégration du code HTML à notre script en fermant la balise HTML puis on stock le code contenu dans la varible "$html_var" dans le fichier de l'utilisateur "$fichier_html".

</html>
"@

# On copie le contenu HTML stocké dans la varible $html_var
Add-Content $fichier_html $html_var

Lien des images et logo : petite astuce.

Afin que vos logos et image soient toujours disponibles, et donc toujours affiché, je vous recommande de stocké ses images sur un hébergement web. Et ainsi de mettre vos URL dans votre code HTML.

https://support.google.com/accounts/answer/6010255?hl=fr

Envoi aux utilisateurs

Vous avez à présent créée vos signatures HTML, maintenant vous devrez les diffusés aux utilisateurs. Pour cela on va compléter notre script de manière à automatisé l'envoi lors de la création de la signature.

Avant toutes choses vous devrez authoriser votre boite mail à encvoyer des mail grâce à votre script. Pour GMAIL voici le lien de l'activation :

Nous allons créer un fichier texte qui contiendra le corps du mail. Ce fichier ne nomme "message-mail.txt".

ATTENTION; pour être bien interprété par notre messagerie, le fichier contenant le corps de votre message devra être formaté en UTF8-BOM, vous pouvez utiliser Notepad++ pour facilité l'encodage.

#---------------- Envoi par mail de la signaure HTML ---------------------

#La varible corpsmail récupère le texte du fichier message.txt
# ATTENTION LE FICHIER DOIT ETRE ENCODE EN UTF8-BOM POUR LA GESTION DES CARACTERES SPECIAUX
$corpsmail=Get-Content -Path ".\Documentation\message-mail.txt"

Ensuite voici le code pour configurer l'envoi du mail. Pour l'utiliser il vous faudra adapter certaines lignes.

$EmailFrom = mail de l'émetteur

$Subject = L'Objet du mail

$Body = $corpsmail (= fichier texte qui contient le corps du message)

$SMTPServer = l'adresse du serveur SMTP de l'émetteur

$FilenameAndPath1 et $FilenameAndPath2 = Le chemin de vos pièce jointes.

ATTENTION : N'oubliez pas d'ajouter l'extention du fichier ".docx" ; ".pdf" .... Pour la pièce jointe soit bien ajoutée à votre mail

$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, Port du serveur)

$SMTPClient.EnableSsl = $true (Utilisation du SSL)

#Adresse mail de destination
$EmailTo = $Mail
#Adresse Mail de l'émméteur
$EmailFrom = "adresse@mail.fr"
#Sujet du Mail
$Subject = "Mise en place de Signature Mail "
#Coprs du mail (message)
$Body = $corpsmail
#serveur SMTP
$SMTPServer = "smtp.gmail.com"

#Pièce jointe à àjouter au message.
    $filenameAndPath1 = ".\Signatures-HTML\Signature_$Identite.html"
    $filenameAndPath2 = ".\Documentation\Procédure-Ajout-signature-mail-pro-OZENNE.pdf"
    $SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
    $attachment1 = New-Object System.Net.Mail.Attachment($filenameAndPath1)
    $attachment2 = New-Object System.Net.Mail.Attachment($filenameAndPath2)
    $SMTPMessage.Attachments.Add($attachment1)
    $SMTPMessage.Attachments.Add($attachment2)
#paramètre du serveur SMTP de google
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true

Enfin deux solutions pour vous authentifier à votre boite mail émettrice :

La fonction suivante permet à utilisateur de saisir lui au travers d'une boite de dialogue ses identifiants et mot de passe. $SMTPClient.Credentials = (Get-Credential)

Par contre la fonction suivante autentifie l'utilisateur dans votre code powershell, cette méthode est la moins sécurisée car les identifiants sont écrits en clair dans le script. Cependant, cette technique est très efficace en phase de teste car elle permet de ne pas saisir vos identifiants à chaque éxecutions du script. Voici la fonction

# Appel à un élément d’authentification, qui permet à l’utilisateur de saisir son mot de passe
#$SMTPClient.Credentials = (Get-Credential)
#Authentification en clair dans le code
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("identifiant@mail.com", "motdepasse")
$SMTPClient.Send($SMTPMessage)

Enfin pour terminer notre script nous devons fermer les balises et ne pas oublier de fermer l'accolade de notre boucle Foreach.

# FIN DU SCRIPT
}