Export AD avec attributs étendus

Suite à mon article Powershell, « Suppression automatique de Machine dans un AD » , je vous propose encore un nouveau petit script.

L’export AD avec attributs étendus !

Quand je parle d’attribut étendus, il s’agit d’informations supplémentaires que nous n’avons par conséquent pas avec un simple export (LastLoginDate, DistinguishedName, etc.).

##########################################################
# Author      : Christian Sueur (Contact@christiansueur.com)
# # Update Date : 20191122 By Christian.sueur
# # Comment     : Create a CSV from AD Computer list
# #               Format-table : operating system, last connection, etc.
# #
# ##########################################################


#Import du module AD
Import-Module ActiveDirectory

#Variable Definition
$dom = "myDom.com"
$MyOU = "OU=computers,OU=FR,DC=myDom,DC=com"

Get-ADComputer -Server $dom -SearchBase $MyOU -Properties * -filter * | Export-Csv C:\temp\test\export.csv -NoTypeInformation -Encoding UTF8

Suppression automatique de Machine dans un AD

Depuis quelques temps, je me suis remis à l’écriture de script en Powershell afin d’automatiser les actions dans un AD.

Voici donc un script permettant la suppression automatique de machines dans l’AD depuis une liste présentent dans un fichier texte.

##########################################################
# Author      : Christian Sueur (Contact@christiansueur.com)
# # Update Date : 20191122 By Christian.sueur
# # Comment     : Delete all computer from your "c:\temp\import.txt" file
# ##########################################################


#Import du module AD
Import-Module ActiveDirectory

# Importation des ordinateur depuis le fichier CSV spécifié
$computer = Get-Content C:\temp\import.txt
# Suppression de l'ordinateur 
foreach($ADComputer in $computer) 
{ 
    $Comp = $ADComputer
    echo $Comp #pour tests et informations ;)
    try{
        Get-ADComputer $Comp | Remove-ADComputer -Confirm:$false
    }
    catch {
        echo $Comp >> C:\temp\non_present.txt
    }
}

Comment ça marche ?

Le script va aller lire ligne par ligne les noms de machine présentes dans le fichier C:\temp\import.txt, puis va ajouter les valeurs dans une variable.

Exemple de fichier import.txt

Nom_de_machine1
Nom_de_machine2
Nom_de_machine3

Nous allons ensuite simplement prendre les valeurs une à une de la variable et tester si la machine est présente dans l’AD avec un Get-ADComputer.

Si la machine est présente on applique un Remove-ADComputer afin de la supprimer sinon on ajoute l’information dans un fichier texte afin d’avoir une visibilité sur les machines non présentes (log).

News : Le retour

Salut à tous !

Cela fait un petit moment maintenant que je n’avais pas écris d’articles (presque 1 an).

On ne va pas ce le cacher, cette année à été particulièrement intense. Je ne pense d’ailleurs pas que cela va changer…

Néanmoins, je vais, à partir de maintenant, reprendre l’écriture d’articles afin de me forcer une veille technologique, qui malheureusement, était un peu passer à la trappe depuis presque un an ..

A très vite 🙂

[MAJ]: Script auto install TeamViewer

I y a quelques temps, j’avais mis à disposition un Script d’installation automatique de Teamviewer sous linux que j’avais écris rapidement et pour lequel j’effectue régulièrement maj.

Petit article rapide pour vous informer que je viens à nouveau de le mettre à jour. J’ai remarqué une erreur en fin de script. Un « fi » c’était glisser en trop en fin de code.

Pour le récupérer : https://gitlab.com/christiansueur/Linux_AutoInstall_Teamviewer/blob/master/AutoInstallTM.sh

Bonne Année 2019 !!

Je vous souhaite une très bonne année 2019 !
Comme toujours, je me fixe des résolutions mais pour une fois un peu plus folle que d’habitude.
En effet, j’y pense depuis un moment, mais je vais enfin me lancer dans les tutos vidéo.
L’intérêt étant que les tutos vidéo sont souvent plus simple à comprendre qu’un article long à lire. En effet, j’ai bien vu depuis quelques années, avec l’arrivé des vidéos YouTube, que de plus en plus de mes collègues et amis font des recherches directement sur les plateformes de vidéo, plutôt que directement sur les outils de recherches habituels (DuckDuckGo, Google, …).


Not able to execute a .sh file: /bin/bash^M: bad interpreter

Il y a quelques mois (déjà …), alors que je modifiais des scripts Linux d’installation automatique de logiciels, je me suis retrouvé avec le message suivant dans ma console.

Not able to execute a .sh file: /bin/bash^M: bad interpreter

Sur le moment je n’ai pas trop compris d’où venait le problème. Et puis je me suis rendu compte que j’avais effectué des modifications du script depuis une machine Windows et j’avais commit la nouvelle version vers mon Git.

D’où viens le problème ?

En fait, le fichier a été transféré entre des systèmes de types différents avec des conventions de nouvelle ligne différentes.
Les éditeurs de texte Windows auront un caractère de retour chariot spécial (CR + LF) à la fin des lignes pour indiquer un retour de ligne ou une nouvelle ligne, qui sera affiché de manière incorrecte sous Linux (^ M).
Souvent, c’est parce que le fichier est créé ou peut-être même édité sur un ordinateur Microsoft Windows, puis téléchargé ou transféré sur un serveur Linux. Cela se produit généralement lorsqu’un fichier est transféré à partir de MS-DOS (ou MS-Windows) sans mode ASCII ou texte.
Cela peut être difficile à détecter. En effet, certaines applications ou programmes gèrent correctement les caractères de nouvelle ligne alors que d’autres non.
Ainsi, certains services peuvent tomber en panne ou ne pas répondre correctement.

Comment résoudre le problème ?

Il existe plusieurs solutions possible 🙂

  • Le logiciel/paquet dos2unix
dos2unix monfichierAmodifier
  • sed
sed -e "s/\^M//"  monfichierAmodifier  > monfichierModifier 
  • Vim (ma solution préféré mais pas aussi rapide que dos2unix)

Après avoir ouvert le fichier avec Vim taper

:%s/^M//g

Et voilà, vous ne devriez plus avoir de soucis 🙂

Re-génération de la configuration de yunohost (mailman)

Suite à mise à jour d’une plateformes Yunohost (utilisée dans de nombreuses associations) j’ai eu un gros problème. Les configurations des envois sur les listes de diffusion gérer par Yunohost ne fonctionnaient plus.

Après une lecture des logs, je me suis aperçu que les e-mails ne s’envoyer plus à cause d’un problème de droits ….

Du coup, comme ce problème survient suite à une mise à jour, obligation de changer la configuration. Le mieux étant de simplement faire une re-génération de la config.
Néanmoins, en fonction des associations, mes configurations sont gérées de façon différente. Il est donc nécessaire de s’assurer avant toutes manipulations que je ne vais pas perdre des informations sur la modification du fichier.

Pour ce faire, je me connecte au serveur et j’utilise la commande suivante afin d’avoir un retour sur les ajouts (indiqué par un +) et les suppressions (indiqué par un -) par rapport au fichier conf de base :

yunohost service regen-conf --dry-run -d

Une fois les informations récupérées (si nécessaire), il suffit de taper la commande suivante pour re-générer le fichier de configuration :

yunohost service regen-conf 

Et voilà 😉
Dans mon cas ça me règle (en général) tous mes problèmes après une grosse mise à jour.

Vérification et amélioration des scripts shell

Il y a quelques jours je retweeter un article concernant un petit logiciel/outils nommée ShellCheck.

Ce n’est pas la première fois que j’en entendais parler, mais j’avoue que je ne l’avais pas encore testé. Ce qui est maintenant chose faite, et je dois dire que… hé ben c’est super 😀

Pour l’installer sur votre machine Gnu/Linux c’est plutôt simple. Voici comment faire sur une distribution Debian/Ubuntu :

Continuer la lecture

Script Installation automatique

Suite à mon article script d’installation automatique de teamviewer sous linux je me suis dit qu’il serait intéressant d’écrire un petit script afin de faire l’installation d’un pack de logiciels que je considère comme important.

Il ce trouve que j’installe très (très) régulièrement des machines pour des tests ou dans le cadre de mon engagement dans des GUL (groupe d’utilisateur de linux et de logiciels libre).

Voici donc le lien pour faire une auto installation des logiciels : Gitlab:Linux_AutoInstallPack.sh