Bonne fête à tous les sysadmins

En ce jour du 26 juillet c’est la fête aux sysadmins !!!
Le site officiel SysAdminDay célèbre aujourd’hui le 14eme jour de l’appréciation des sysadmins et pour la peine voila le message de constat :

Let’s face it, System Administrators get no respect 364 days a year. This is the day that all fellow System Administrators across the globe, will be showered with expensive sports cars and large piles of cash in appreciation of their diligent work. But seriously, we are asking for a nice token gift and some public acknowledgement. It’s the least you could do.

Consider all the daunting tasks and long hours (weekends too.) Let’s be honest, sometimes we don’t know our System Administrators as well as they know us. Remember this is one day to recognize your System Administrator for their workplace contributions and to promote professional excellence. Thank them for all the things they do for you and your business.

Alors même si ce n’est qu’aujourd’hui félicitez votre sysadmin qui prends soin de votre IT toute l’année :)

Découvrez les joies du sysadmin

Piloter son android avec Raspberry Pi et adb

Une bonne nouvelle, grâce a AdamOutler du forum XDA il est possible d’utiliser le Android Debug Bridge (adb) sur le Raspberry Pi très facilement.

Voila comment procéder :

Récupération de l’archive

apt-get install p7zip
wget 'http://forum.xda-developers.com/attachment.php?attachmentid=1392336&d=1349930509' -O adb.7z
7zr x adb.7z 
cp mypart/adb /usr/local/bin/

Et on test le binaire :

adb version
Android Debug Bridge version 1.0.29

Communication avec le smartphone

* En premier lieu il faut autoriser le debugage Android sur le smartphone
Paramètres / Options Devellopeur / Debogage Android

adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
SH1BVTRXXX	device

Installation des applications par défaut sur la carte SD

* On vérifie le setting actuel [0/auto] [1/internal] [2/external]

adb shell pm getInstallLocation
0[auto]

* On force le setting a external (si l’application est compatible)

adb shell pm setInstallLocation 2

Avoir un shell sur Android

adb shell
shell@android:/ $ ls   
acct
app-cache
cache
config
d
data
default.prop
dev
etc
init
init.cm.rc
init.goldfish.rc
init.marvel.rc
init.msm7x27.usb.rc
init.rc
init.trace.rc
init.usb.rc
mnt
proc
root
sbin
sd-ext
sdcard
storage
sys
system
ueventd.goldfish.rc
ueventd.marvel.rc
ueventd.rc
vendor

Transfert de fichiers sur/de la carte SD

* Download

adb pull /mnt/sdcard/BLU\ MOD\ V1.1.zip /root/
1544 KB/s (149377165 bytes in 94.433s)

* Upload

adb push /home/pi/test.txt /mnt/sdcard/

RaspMap un analyseur de réseau ethernet/bluetooth/wifi sur Raspbian

Apres avoir dégrossi le hardware et les differentes méthodes d’accès et de performance du Raspberry voila le 1er lab grandeur nature : il s’agit de Raspmap dont les sources sont disponibles sur mon github.

Pour faire simple c’est un script qui permet de faire du wardriving wifi et bluetooth ainsi que du mapping de réseau ethernet. Toujours pratique pour un admin réseau en ballade :)

Pour ce lab il faut :

  • Raspberry Pi
  • Raspbian
  • Dongle Bluetooth
  • Antenne Wifi (monitor mode)
  • RJ45
  • USB power

20130705_132329

Une fois ce materiel assemblé on obtient un montage compact si on n’utilise pas de hub usb.

20130703_182345

Pour commencer il faut installer Raspmap sur la Raspbian avec les sources sur Github

git clone https://github.com/zephilou/raspmap.git
cd raspmap
./install.sh

Et vous devriez voir ca si votre ssmtp est bien configuré :

./install.sh 
 SSMTP ok 
 Nmap  ok 
 xsltproc  ok 
 mtr  ok 
 nbtscan  ok 

 Choose a destination email  
Email :  email@exemple.com

 Sending .... 
 Check your email email@exemple.com ... have you got it ? (y/n)  
y or n : y

 Email  ok 

Si vous n’avez pas reçu l’email, vérifiez votre configuration /etc/ssmtp/ssmtp.conf

Une fois que l’email confirmant l’installation de RaspMap reçu, coupez le jus et on est prêt.

Voila comment ce déroulera le prochain boot:

  • Récupération d’une IP locale via DHCP
  • Récupération de l’ip publique
  • Listing des interfaces réseau
  • Extraction de la plage réseau en CIDR
  • Extraction des informations du périphérique Bluetooth
  • Scan des périphériques Bluetooth environnant
  • Extraction des informations du périphérique Wifi
  • Scan des Access Point Wifi environnant
  • MyTraceRoute jusqu’à Google
  • Correspondance IP nom de machine
  • Scan de toute la plage réseau
  • Envoi du rapport a l’email configuré a l’installation

Au niveau utilisation rien de plus simple, on branche le RJ45 au switch/hub/routeur et mettez l’alimentation. Il ne reste plus qu’a attendre.

20130705_132706

Voila quelques screenshots du rapport email :

  • ifconfig
  • Raspmap-ifconfig

  • Bluetooth
  • Raspmap-bluetooth

  • iwconfig
  • Raspmap-iwconfig

  • mtr
  • Raspmap-mtr

  • hostname
  • Raspmap-hostname

  • nmap
  • Raspmap-nmap

    Le process prend moins de 5 minutes pour scanner et envoyer le rapport par email, et pour visualiser ceci j’ai monté un Arduino avec des LED de contrôles en fonction des différentes actions. Ce montage utilise raspmap-control qui fera l’objet d’un futur article dès que le projet sera un peu plus mature.

    20130704_123120

    A vos scans :)

    Prise en main d’un Arduino avec les premiers sketchs et communication serial de l’ide

    En rapport le précédent article, et pour continuer sur les périphériques embarqués, voila la prise en main d’un Arduino Duemilanove.

    20130703_174533

    Pour commencer il faut installer l’IDE Arduino.

    Une fois installé vous tombez la dessus, le menu du haut de gauche a droite permet de compiler le sketch, de l’uploader sur l’Arduino, ou de faire un New Open et Save. L’icone du bout est dédiée a la communication serial qu’on verra plus tard.

    ArduinoIde

    On vérifie que l’Arduino est bien alimenté avec une Led et une resistance qu’on va brancher sur les ping 5V et sur GND meme s’il y a deja une LED sur controle sur le PCB

    ArduinoSimpleLed

    Ca devrait vous donner ca :

    20130703_180643

    Ok maintenant on passe a l’écriture d’un sketch qui va faire clignoter la LED 13 toujours protégée par une resistance hein :)

    // On attribue l'id d'une LED a la variable led
    int led = 13;
    
    // On configure le type d'entrée ici une output 
    void setup() {                
      pinMode(led, OUTPUT);    
    }
    
    // Ce que va faire le programme infiniement
    void loop() {
      digitalWrite(led, HIGH);  
      delay(100);               
      digitalWrite(led, LOW); 
      delay(100);            
    }
    

    AdruinoBlink

    Pour avoir ceci (faites pas attention aux 3 LED en haut a gauche ni de la LED blance … on y reviendra dans un futur article) :

    ArduinoBlink1

    ArduinoBlink0

    On va maintenant s’occuper de la liaison Serial avec ce nouveau sketch mais avec le meme montage.

    int led = 13;
    
    void setup()
    {
      Serial.begin(9600);
      pinMode(led, OUTPUT);
    }
    
    void loop()
    {
      digitalWrite(led, HIGH);
      Serial.println("Hello led!");
      delay(1000);
      digitalWrite(led, LOW);
      delay(1000);
    }
    

    Apres l’upload la LED 13 devrait maintenant clignoter toute les secondes, et si on ouvre le Serial Monitor on devrait voir :

    ArduinoSerialMonitor

    Et voila pour la premiere partie !

    Prise en main du Raspberry Pi avec Raspbian en mode headless

    Huf huf huf y’avait un peu de poussiere sur les articles …

    Ca fait maintenant quelques semaines que j’ai acquis un Raspberry Pi model B commandé chez Element 14. Voici un petit tutorial pour l’installer avec Raspbian en mode headless c’est a dire sans écran … pour le fun.

    Pour bien démarrer il vous faut :

    • Raspberry Pi
    • Carte SD (classe 10)
    • Cable réseau
    • Cable Usb Micro B
    • Optionnel : Cable HDMI/RCA
    • Optionnel : Clavier/Souris
    • Optionnel : Boitier

    20130702_162755

    On commence par récupérer l’image de Raspbian et on prépare la carte SD ici sur Mac.

    * On commence par trouver la dénomination de la carte SD

    diskutil list 
    /dev/disk0
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:      GUID_partition_scheme                        *500.1 GB   disk0
       1:                        EFI                         209.7 MB   disk0s1
       2:                  Apple_HFS Lion HD                 499.2 GB   disk0s2
       3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
    /dev/disk2
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:     FDisk_partition_scheme                        *4.0 GB     disk2
       1:                 DOS_FAT_32 UNTITLED                4.0 GB     disk2s1
    

    * On démonte la carte (chez moi disk2s1)

    diskutil unmountDisk /dev/disk2s1
    

    * On ‘grave’ l’image sur la carte SD en rajoutant un r pour écrire en raw

    dd if=Downloads/2013-05-25-wheezy-raspbian.img  of=/dev/rdisk2 bs=1m 
    1850+0 records in
    1850+0 records out
    1939865600 bytes transferred in 1315.130117 secs (1475037 bytes/sec)
    

    A partir de la on met la carte SD dans le Raspberry et on branche le câble réseau et l’alimentation Usb.
    On devrait voir les led de contrôle du Raspberry s’illuminées.

    20130702_175124

    Maintenant il s’agit de trouver quelle adresse ip le Raspberry a récupérer sur le réseau local. Pour ça faites un tour sur votre box ou un petit coup de nmap en recherchant quelle MAC appartient a notre Raspberry.

    nmap -sS 10.1.1.0/24
    ...
    Nmap scan report for raspberrypi.home (10.1.1.13)
    Host is up (0.059s latency).
    Not shown: 999 closed ports
    PORT   STATE SERVICE
    22/tcp open  ssh
    MAC Address: XX:XX:XX:XX:XX:BB (Raspberry Pi Foundation)
    ...
    

    Maintenant on se connecte en ssh sur raspbian (ici sur l’ip 10.1.1.13) avec le user par défaut pi et son password par défaut raspberry

    ssh pi@10.1.1.13
    The authenticity of host '10.1.1.13 (10.1.1.13)' can't be established.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '10.1.1.13' (RSA) to the list of known hosts.
    pi@10.1.1.13's password: 
    Linux raspberrypi 3.6.11+ #456 PREEMPT Mon May 20 18:42:15 BST 2013 armv6l
    
    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    
    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    
    NOTICE: the software on this Raspberry Pi has not been fully configured. Please run 'sudo raspi-config'
    
    pi@raspberrypi ~ $ 
    

    * La premiere chose a faire est de faire le resize de la carte SD en utilisant la commande suivante

    sudo raspi-config
    

    raspi-config

    Apres un reboot votre Raspberry Pi est presque prêt.

    Pour éviter de cramer la carte SD avec les écritures on peut bouger la partition root sur un autre support par usb (sda1 dans mon cas). Ca améliore aussi grandement les performances.

    umount /dev/sda1
    mkfs.ext4 /dev/sda1
    e2fsck /dev/sda1
    mount /dev/sda1 /media/usbstick
    dd if=/dev/root of=/dev/sda1 bs=4M
    resize2fs /dev/sda1
    

    On modifie le fstab

    nano /media/usbstick/etc/fstab
    proc            /proc           proc    defaults          0       0
    /dev/mmcblk0p1  /boot           vfat    defaults          0       2
    /dev/sda1       /               ext4    defaults,noatime  0       1
    

    Et on modifie le boot

    nano /boot/cmdline.txt
    dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline rootwait
    

    Et on reboot :)

    Voila it’s done ! Une debian sur un Raspberry Pi.