Avr 202016
 

cat /etc/init.d/low_bat_shutdown
#!/bin/bash

# LiPoPi

# Shut down the Pi if the GPIO goes high indicating low battery
# GPIO Port

gpio_port= »15″
# Enable GPIO

if [ ! -d « /sys/class/gpio/gpio$gpio_port » ]; then

  echo 15 > /sys/class/gpio/export || { echo -e « Can’t access GPIO $gpio_port » 1>&2; exit 1; }

fi
# Set it to input

echo « in » > /sys/class/gpio/gpio$gpio_port/direction || { echo -e « Can’t set GPIO $gpio_port to an input » 1>&2; exit 1; }
# Set it as active high

echo 0 > /sys/class/gpio/gpio$gpio_port/active_low || { echo -e « Can’t set GPIO $gpio_port to active high » 1>&2; exit 1; }
# If its low (low battery light is on), shutdown

if [ « `cat /sys/class/gpio/gpio$gpio_port/value` » != 1 ]; then

  echo « Shutting down due to low power `date` »

  /sbin/shutdown -h now || { echo -e « Can’t halt the system » 1>&2; exit 1; }

fi

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

Jan 162015
 

J’ai fait l’acquisition d’une Surface Pro 3 et cette s***** ne tient pas la batterie. Les commandes suivantes m’ont indiqu?s certaines choses utiles:

powercfg /sleepstudy

le rapport m’indique que le p?riph?rique suivant bouffe toutes les ressources :

"Contr?leur d?h?te compatible xHCI USB (\_SB.PCI0.XHC)"

On dirait mon contr?leur disque…

Cette commande me montre l’?volution de ma batterie dans le temps :

powercfg /batteryreport
16:05:56 Connected standby Battery 90 % 37 mWh
21:23:56 Active Battery 61 % 24 mWh

Donc, en 5 heures, il a vid? 30% de ma batterie…

Je vais contacter Microsoft.

 

 

Juil 062014
 

Bon, je passe sous silence le caract?re interdit par la loi. Ceci n’est document? que dans un but ?ducatif. Lisez bien les articles indiqu? ci-dessous.


http://www.framboise314.fr/le-raspberry-pi-comme-emetteur-fm-experimental/

Vous aurez besoin de :

  • Un raspberry Pi
  • Un bout de fil de 75cm (gain? pour ?viter de tout cramer
  • Un fer ? souder pour souder le fil sur le PIN 7 du Raspberry Pi (voir le site : http://www.framboise314.fr/le-raspberry-pi-comme-emetteur-fm-experimental/ ils font ?a mieux que moi

Version courte :

mkdir pifm
cd pifm
wget http://omattos.com/pifm.tar.gz
tar -zxf pifm.tar.gz

Pour ecouter sur la canal 108.0 FM le g?n?rique de la guerre des ?toiles (a ex?cuter en tant que root (sudo):

./pifm sound.wav 100.0

Pour diffuser votre WebRadio pr?f?r?e (dans mon cas: di.fm
Aller chercher le fichier PLS de votre station de radio (enregistrement sur le site obligatoire)
Editer le fichier PLS avec votre editeur de texte pr?f?r?, et copiez la ligne commencant par « File1=xxxx » (Sous Windows, tout est coll?. Utilisez Wordpad, il s’en sort bien!
Pour lancer le streaming :

apt-get install ffmpeg
ffmpeg -i "http://pub5.di.fm:80/di_vocaltrance?041743de647ca132e65513b5 -f s16le -ar 22.05k -ac 1 - | ./pifm - 108.0

Adaptez l’adresse web par la v?tre.

Ah! et bien sur, si vous fermez votre fen?tre de terminal, ben.. y’a plus de musique.
Solution : screen
apt-get install screen
Pour un tutoriel :

sinon:

screen
ffmpeg -i "http://pub5.di.fm:80/di_vocaltrance?041743de647ca132e65513b5 -f s16le -ar 22.05k -ac 1 - | ./pifm - 108.0
(appuyer sur CTRL+A d --> Control A et ensuite, D tout seul )

Ay????…

Juin 042014
 

Vous voulez donner un nom sympa ? vos LUNs au lieu du naa ? rallonge?
Assez facile avec cette fonction :

function Rename-scsilun {
Param([string]$naa, [string]$ScsiLunName)
get-vmhost | foreach {
$esx = Get-VMHost $_.name | Get-View
$storSys = Get-View $esx.ConfigManager.StorageSystem
Get-ScsiLun -VMHost $_.name -LUNType disk -CanonicalName $naa -ErrorAction SilentlyContinue | %{$storSys.UpdateScsiLunDisplayName($_.ExtensionData.Uuid, $ScsiLunName)}
}
}

A utiliser comme ceci :

Rename-scsilun -naa naa.1234567890123456789 -ScsiLunName SAN_PRD-LUN_01

Mai 282014
 

Code :

$ListVM=get-vm | Sort-Object -Property Host
$ListHOST=get-vmhost

$viewSI = Get-View ‘ServiceInstance’
$viewVmProvChecker = Get-View $viewSI.Content.VmProvisioningChecker

$Resultat = $ListVM | ForEach-Object {
$obj=New-Object PSObject
$myVM=$_
$obj | add-Member Noteproperty -name Name -value $myVM.name
$obj | add-Member Noteproperty -name CurrentHost -value $myVM.host
$ListHOST | ForEach-Object {
$myHost=$_
$resultCheck=$viewVmProvChecker.QueryVMotionCompatibilityEx(($myVM).Id, ($myHost).Id)
$nbErreur=($resultCheck[0].Error | measure-object | select -Property count).count
write-host « $myVM vers $myHost : $nbErreur » -foregroundcolor blue
$obj | add-Member Noteproperty -name ($myHost.name) -value ($nbErreur)
}
$obj
}
$Resultat | out-gridview

Ca donne un chouette tableau. o? le chiffre correspond au nombre de problemes rencontr?s pour le vMotion.
Pour connaitre la cause d’un echec :


function get-vmotionProblems{
Param([string]$vmName, [string]$vmHost)
$viewSI = Get-View 'ServiceInstance'
$viewVmProvChecker = Get-View $viewSI.Content.VmProvisioningChecker
$resultCheck=$viewVmProvChecker.QueryVMotionCompatibilityEx((Get-VM -name $vmName).Id, (get-vmhost -name $vmhost).Id)
($resultCheck[0].error)| foreach { $_.LocalizedMessage }
}

Qu’on utilise comme ceci :

get-vmotionProblems -vmName MA_VM01 -vmHost MON_ESX02

Mai 082014
 

import-module activedirectory

$Application= »
$sgroup= »

Import-Csv c:\temp\source.csv -Delimiter ‘;’ | where-object { $_.’Create DL’ -eq ‘X’ } | Sort-Object DL_,AD | select-object DL_,AD -unique | foreach {
if ($_.DL_ -eq $Application) {
$sgroup+= »(MemberOfGroup -eq ‘ »+(Get-ADGroup $_.AD | Select-Object -ExpandProperty DistinguishedName)+ »‘) -or  »
} else {
if ($Application -ne  » ) {
$sgroup=$sgroup.Substring(0,$sgroup.Length-4)
Remove-DynamicDistributionGroup « $Application » -Confirm:$false
$a= »New-DynamicDistributionGroup ‘$Application’ -Alias ‘$Application’ -OrganizationalUnit ‘OU=Distribution Lists,OU=Groups,OU=Users and groups,DC=MonDomaine,DC=local’ -RecipientFilter {(RecipientType -eq ‘UserMailbox’) -and ( ($sgroup)) }  »
invoke-expression $a

}
$Application=$_.DL_
$sgroup= »(MemberOfGroup -eq ‘ »+(Get-ADGroup $_.AD | Select-Object -ExpandProperty DistinguishedName)+ »‘) -or  »
}
}

if ($_.DL_ -ne $Application) {
$sgroup=$sgroup.Substring(0,$sgroup.Length-4)
Remove-DynamicDistributionGroup « $Application » -Confirm:$false
$a= »New-DynamicDistributionGroup ‘$Application’ -Alias ‘$Application’ -OrganizationalUnit ‘OU=Distribution Lists,OU=Groups,OU=Users and groups,DC=MonDomaine,DC=local’ -RecipientFilter {(RecipientType -eq ‘UserMailbox’) -and ( ($sgroup)) }  »
invoke-expression $a

}

#########################################################

$MyGroup = Get-DynamicDistributionGroup -id MA_DDL
Get-Recipient -RecipientPreviewFilter $MyGroup.RecipientFilter

Nov 102013
 

Ouvrez une console PowerShell et indiquez ce code :

Set-Alias ngen @(
dir (join-path ${env:\windir} "Microsoft.NET\Framework") ngen.exe -recurse |
sort -descending lastwritetime
)[0].fullName
[appdomain]::currentdomain.getassemblies() | %{ngen $_.location}

Et PAF, ca fait des chocapics, ca fonctionne !