Avr 202016
 

Tout se joue dans .bashrc

MON_IP=`ifconfig | grep ‘inet adr’| grep -v ‘127.0.0.1’ | cut -f 12-13 -d ‘ ‘ | cut -d: -f 2`

if [ « $color_prompt » = yes ]; then
    PS1=’${MON_IP} `/opt/vc/bin/vcgencmd measure_temp` ${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w \$\[\033[00m\] ‘

else

    PS1=’${MON_IP} `/opt/vc/bin/vcgencmd measure_temp` ${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ‘

fi

Mar 082016
 

Installer Raspbian comme d’habitude.

Configurer le réseau (wifi)
vi /etc/network/interfaces

allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

vi /etc/wpa_supplicant/wpa_supplicant.conf

network={
ssid= »SSID »
psk= »MotDePasse »
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}

Installer Repetier-Server (armel)
wget http://download.repetier.com/files/server/debian-armel/Repetier-Server-0.70.1-Linux.deb
dpkg -i Repetier-Server-0.70.1-Linux.deb
update-rc.d RepetierServer defaults
service RepetierServer start

Redémarrer
init 6

Fév 012016
 

Dans mon environnement, se trouvent des « vieux » ESX(i)s 4.1 qui se font régulièrement jeter par le vCenter.
Après avoir fait les vérifications de base (firewall, heartbeat,…), nous avons constaté que le problème venait de la vérification des certificats SSL.
Windows vérifie régulièrement que les certificats utilisés ne sont pas sur une liste de certificats révoqués. Pour ce faire, le PC (dans ce cas ci, le vCenter) se connecte chez Microsoft pour obtenir cette liste.
Or, nous n’avons pas autorisé cette connexion réseau, et donc, timeout, et le vcenter continue sa vie sans probleme.

MAIS, dernièrement, notre équipe réseau préférée a fait un changement dans la topologie et maintenant, les paquets ne sont plus justes droppés, mais rebondissent entre 2 routeurs jusqu’à la fin de leur TTL. Et donc, le timeout dure plus longtemps que prévu… et vCenter (et les ESX(i)s 4.1) n’aiment pas ça du tout.

Nous avons donc désactivé la Policy qui vérifie cette liste de certificats révoqués, et… plus AUCUN problème.

La Policy :
Local Computer Policy
-> Computer configuration
–> Windows Settings
—> Security Settings
—-> Public key Policies
====> Certificate Path Validation Settings
=====> Network retrieval
======> Define these Policy settings : aucune case cochée.

Bon, c’est moins sécurisé, mais… ça fonctionne.

Jan 292016
 

Si vous tentez d’ouvrir une console via la ligne de commande PowerShell et que vous avez cette erreur :

get-vm MGMT | Open-VMConsoleWindow
Open-VMConsoleWindow : 29-01-16 11:44:00    Open-VMConsoleWindow        Unable to find the specified browser: "C:\".
Au caractère Ligne:1 : 15
+ get-vm MGMT | Open-VMConsoleWindow
+               ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument : (:) [Open-VMConsoleWindow], InvalidArgument
+ FullyQualifiedErrorId : ViCore_ViCoreServiceImpl_GetVMConsoleWindowBrowser_FileNotFound,VMware.VimAutomation.ViCore.Cmdlets.Commands.OpenVMConsoleWindow

C’est que PowerCli ne sait pas quel browser utiliser (ouais… super le message d’erreur, hein !)
Dans ce cas, configurez le browser à utiliser via une des deux commandes suivantes (en fonction de vos préference). Cette action est à exécuter avec des droits d’administrateur.

Notez que vous devez indiquer la version 32 bit du browser !

Internet Explorer
Set-PowerCLIConfiguration –VMConsoleWindowBrowser 'C:\Program Files (x86)\Internet Explorer\iexplore.exe'
Firefox
Set-PowerCLIConfiguration –VMConsoleWindowBrowser “C:\Program Files (x86)\Mozilla Firefox\firefox.exe”

 

Jan 082016
 

Voici quelques commandes « perso ». Je pose ca la comme ca. Pas d’explications..

Faire de la place :

apt-get autoremove wolfram-engine

Mettre à jour

apt-get update -y && apt-get upgrade -y && unit 6

Désactiver l’extinction de l’écran
Editer le fichier
/boot/cmdline
et ajouter à la fin du texte :
consoleblank=0

Ajouter une carte virtuelle sur une carte réseau existante.
iw dev wlan0 interface add mon0 type monitor

Remplacez « Monitor » par le mode de votre choix.

Empêcher « network manager » de venir embêter votre hostapd: vi NetworkManager/NetworkManager.conf

[keyfile]
unmanaged-devices=mac:<hwaddr>
Créer des cartes réseau wifi virtuelle

iw dev wlan0 interface add wlan0_cli type station  
iw dev wlan0 interface add wlan0_ap type __ap
ip link set dev wlan0_sta address 12:34:56:78:ab:cd
ip link set dev wlan0_ap address 12:34:56:78:ab:ce

vi /etc/hostapd/hostapd.conf
ssid=YourWiFiName
wpa_passphrase=Somepassphrase
interface=wlan0_ap
bridge=br0
auth_algs=3
channel=7
driver=nl80211
hw_mode=g
logger_stdout=-1
logger_stdout_level=2
max_num_sta=5
rsn_pairwise=CCMP
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP

When starting hostapd, make sure the wireless network interface is brought up first:

ip link set dev wlan0_ap up

Otherwise, it will fail with a nondescript error: « could not configure driver mode ».

For automatically starting hostapd, enable the hostapd.service.

Nov 142015
 

Aujourd’hui, j’ai fait une connerie… J’ai droppé tout le contenu de ma base de donnée MySQL qui hébergeait ce site.

Bon, pas grave, j’ai des backups (mis en place il y a 3 ans) et ils sont régulièrement recréés, tout va bien.

Et bien non… Le script que j’utilise (choppé sur le net) ne m’encapsule pas les champs de type datetime entre quotes. Résultat: impossible de charger le dump.

J’ai heureusement un petit éditeur de texte super intelligent ContextEditor pour ne pas le citer qui me permet de faire de belles macro. 2 heures plus tard, j’ai enfin un dump qui s’importe. Ouf! plus de peur que de mal!

J’en ai profité pour corriger le script de backup, et SURTOUT, je l’ai testé (en détruisant à nouveau la DB, mais avec un backup de phpmyadmin et avec mon backup précédent).

Résultat : ça fonctionne. Et donc, j’en profite pour vous le taper ci-dessous (bande de veinards).

<?php
$MYSQL_DB='MAdb';
$MYSQL_USER='MONuser';
$MYSQL_PWD='MONpassword';
$MYSQL_SERVER='MonServeurLocal';
$MYSQL_DUMP='./mysql_'.date('l').'.dump';
// Exporting MYSQL
$infos=dumpMySQL($MYSQL_SERVER,$MYSQL_USER,$MYSQL_PWD,$MYSQL_DB);
$fichierDump = fopen($MYSQL_DUMP, "wb");
fwrite($fichierDump, $infos[0]);
fwrite($fichierDump, $infos[1]);
fwrite($fichierDump, $infos[2]);
fclose($fichierDump);

function dumpMySQL($serveur, $login, $password, $base)
{
    $connexion = mysql_connect($serveur, $login, $password);
    mysql_select_db($base, $connexion);
    $entete = "-- ----------------------\r\n";
    $entete .= "-- dump de la base ".$base." au ".date("d-M-Y")."\r\n";
    $entete .= "-- ----------------------\r\n\r\n\r\n";
    $creations = "";
    $insertions = "\r\n\r\n";
    $listeTables = mysql_query("show tables", $connexion);
    while($table = mysql_fetch_array($listeTables))
    {
        // si l'utilisateur a demandé la structure ou la totale
        {
            $creations .= "-- -----------------------------\r\n";
            $creations .= "-- creation de la table ".$table[0]."\r\n";
            $creations .= "-- -----------------------------\r\n";
            $listeCreationsTables = mysql_query("show create table ".$table[0], $connexion);
            while($creationTable = mysql_fetch_array($listeCreationsTables)){
              $creations .= $creationTable[1].";\r\n";
            }
        }
        // si l'utilisateur a demandé les données ou la totale
        {
            $donnees = mysql_query("SELECT * FROM ".$table[0]);
            $insertions .= "-- -----------------------------\r\n";
            $insertions .= "-- insertions dans la table ".$table[0]."\r\n";
            $insertions .= "-- -----------------------------\r\n";
            while($nuplet = mysql_fetch_array($donnees))
            {
                $insertions .= "INSERT INTO ".$table[0]." VALUES(";
                for($i=0; $i < mysql_num_fields($donnees); $i++)
                {
                  $FieldType=mysql_field_type($donnees, $i);
                  if($i != 0)
                     $insertions .=  ", ";
                  if($FieldType == "string" || $FieldType == "blob" || $FieldType == 'datetime')
                     $insertions .=  "'";
                  $insertions .= addslashes($nuplet[$i]);
                  if($FieldType == "string" || $FieldType == "blob" || $FieldType == 'datetime')
                    $insertions .=  "'";
                }
                $insertions .=  ");\r\n";
            }
            $insertions .= "\r\n";
        }
    }
    mysql_close($connexion);
    echo "Sauvegarde réalisée avec succès !!";
    return(array($entete,$creations,$insertions));
}
?>
Sep 162015
 

Si vous avez une BBox qui d?conne comme la mienne, vous ne savez plus où se trouve quelle VM/PC/T?l?phone/bidule.. d’un point de vue IP. Ce petit script fait un inventaire assez sympa. (attention, gourmand en ressources )

Adaptez les champs en gras selon vos besoins 🙂

$MASK='10.254.0.'
$myJobs=for( $i=1;$i -le 254 ; $i++){ 
  $ip=''+$MASK+$i
  Start-Job? -ArgumentList $ip -ScriptBlock { param ($ip)
    if ( test-connection $ip -Quiet -Count 2 ) {
      try    { $hostname=[System.Net.Dns]::gethostentry($ip).Hostname }
      catch { $hostname='Unknown' }

      Finally{ New-Object PSObject -Property @{ IP = $IP ; HostName = $Hostname } }
    }
  }
}
$myJobs | wait-job | out-null
$myJobs | foreach { $_ | receive-job -keep | select IP, Hostname } | tee -variable inventaire | ft -autosize
Sep 072015
 

Bonjour,

Si, comme moi, vous ne savez pas « vraiment » sur quel switch, ni quel port se trouve connecté la vmnic de votre ESX ET que votre switch ne supporte pas CDP, mais LLDP, voici un script maison qui va vous donner l’info.

Mon script lance une capture d’une trame spécifique émise par le switch sur chaque porte afin de faire un inventaire.
L’info est sauvée dans un datastore connu de tous les ESXs (plus facile pour récupérer l’info)

Prérequis :

  • un accès ROOT sur chaque ESX
  • Une connexion via SSH possible sur la console
  • Un datastore commun à tous les ESXs

La création du tableau de correspondance ESX <> mot de passe ROOT

$ESXs =@{'ESX01' ='abc123'}
$ESXs+=@{'ESX02' ='def456'}

Le script :

get-datacenter "MON DataCenter" | get-vmhost | foreach {
$esx=$_.name
$password=$ESXs.Get_Item($_.name)
$_ | Get-VirtualSwitch | select -expandproperty nic| foreach {
$vmnic=$_

$file= »C:\temp\$esx-$vmnic.sh »
‘ps | grep « pkt » | awk  »{ print $1 } » | kill’ | out-file $file -Encoding ascii
« pktcap-uw –uplink $vmnic –ethtype 0x88cc -c 1 -o /tmp/$vmnic  » | out-file $file -append -Encoding ascii
‘FEX=`hexdump -e « 500 \ »%_p\ » \ »\\n\ » » /tmp/’+$vmnic+’ | cut -b 67-77`’ | out-file $file -append -Encoding ascii
‘echo `hostname`,’+$vmnic+’,$FEX >> /vmfs/volumes/MonDatastore/vmnicInventory.csv’ | out-file $file -append -Encoding ascii
« putty.exe $esx -l root -pw $password -m C:\temp\$esx-$vmnic.sh »
putty.exe $esx -l root -pw $password -m C:\temp\$esx-$vmnic.sh | out-null
}
}

Si tout se passe bien, vous vous retrouvez avec un super fichier texte avec toutes les infos.

NB : J’affiche dans la console la ligne de commande que j’execute, car il m’est déjà arrivé de voir « putty » planter en pleine collecte. Plutôt que de tout relancer, je ne lance que la commande qui a planté.
NB2 : Je ne lance pas toutes les collectes en même temps, car il peux arriver que 2 commandes veuillent écrire en même temps et alors, ca plante. C’est plus lent, mais plus sur.

Août 282015
 

ca peux sembler être le titre d’un roman, mais dans la catégorie cauchemar alors ! Je m’explique :

Aujourd’hui, j’ai écrit un super script qui fait plein de choses intéressantes, et histoire de faire ça correctement, je mets quelques programmes exécutable supplémentaires dans le répertoire C:\Windows\system32.

Jusque-là, rien de bien méchant, sauf que mon script qui est lancé par un service supplémentaire, refuse d’exécuter les programmes que j’ai ajouté. Fichier introuvable qu’il me dit.

Introuvable, introuvable? Il lui faut des lunettes, oui!

Je lance à la main, ça fonctionne. Je le lance à partir du service, ça ne fonctionne plus.

Là, on se dit qu’on commence à perdre la tête ou que Windows est une belle merde. Et donc on se retrouve a faire des choses aussi stupide que de faire un « dir » des fichiers en question .

Et c’est là que ça se corse, comme dirait Napoléon

Quand mon script liste les fichiers, il ne trouve rien. Quand je liste les fichiers, je les vois…

Je vous passe tous les noms d’oiseaux qui me sont passés par l’esprit…

Et j’en suis arrivé à la conclusion que la seule différence était le service en question, vieux service qui fonctionnait en 32 bits. Je démarre une console PowerShell en 32 bits, et tente de lister les fichiers? Surprise, pas de fichiers présents. Ou plutôt, pas de fichier 32 bits!!!!!

Windows, pour une raison que je n’explique toujours pas, n’affiche pas les programmes 32 bits qui se trouve dans le répertoire C:\Windows\system32.

J’ai donc trouvé 2 solutions:

  • Mettre à jour mon service en 64 bits, j’ai de la chance il est disponible.
  • Déplacer mes exécutables dans un autre endroit (ce qui n’est pas une bonne idée quand ce sont des fichiers standards Microsoft comme « dfsutil »)

Si vous êtes arrivés sur cette page, et que cela solutionne votre problème, merci de me laisser un message en commentaire, afin que je me sente moins seul merci!

En fait, Microsoft est déjà prêt pour les ordinateurs quantiques. En fonction de la manière dont on regarde, le résultat n’est pas le même. Tu existes et tu n’existes pas en même temps.