blog

    Raspberry Pi 5 PCIe NVMe VS RockPi 4B PCIe m2-extend

    J’ai reçu mon raspi 5 avec le module « NVMe Base » de Pimoroni. Très bonne qualité de finition pour ce dernier comme d’hab.

    N’ayant pas encore reçu le drive M.2, je n’ai profité pour les brancher sur le même adaptateur et disque SSD Apple que j’avais utilisé ici sur le RockPi4 👇 decio.zip/2020/02/1…

    Voilà le comparatif en image

    Sur le RockPi 4B avec module PCIe 2.0 “m2-extend”

    • Vitesse moyenne de lecture: 825.8 Mo/s
    • Vitesse moyenne d’écriture: 564.6 Mo/s
    • Moyenne des temps d’accès: 0.65 ms

    Sur le Raspberry Pi 5 avec module PCIe extension “NVMe Base” :

    • Vitesse moyenne de lecture: 414.4 Mo/s
    • Vitesse moyenne d’écriture: 401.4 Mo/s
    • Moyenne des temps d’accès: 0.09 ms

    En se basant sur ces données, le RockPi 4B a des vitesses de lecture et d’écriture plus élevées que le Raspberry Pi 5, indiquant une performance supérieure en termes de transfert de données. Cependant, la moyenne des temps d’accès est plus faible que sur le raspi5.

    #RaspberryPi #RockPi5

    Les futurs de Liu Cixin

    L'univers de la science-fiction regorge d'œuvres capables de rafraîchir notre perception de la réalité, de l'histoire, et des futurs envisageables. Dans ce genre narratif, la Trilogie du Problème à trois corps de Liu Cixin se distingue, à mon avis, par son esthétisme et sa capacité à populariser des théories et technologies complexes en les tissant habilement avec le récit du vécu de femmes et d'hommes ancrés dans leurs différentes réalités historiques.

    Liu Cixin, avec sa Trilogie du Problème à trois corps, a non seulement captivé mon imagination, mais a également enrichi ma réflexion sur des questions sociétales ou de philosophie ...de l'univers. 😁 L’imaginaire "universaliste", la subtile vulgarisation de concepts théoriques, et l'utilisation de l'histoire humaine comme toile de fond sont mis à l'œuvre , par exemple, pour une contextualisation habile et critique de la révolution culturelle chinoise. Cette dernière sert de prélude à une confrontation épique avec des problématiques d'ampleur cosmique, offrant une perspective originale sur la question des extraterrestres (des terrestres) et de leurs motivations.

    C'est ainsi tout naturellement que mon attention a été capturée par la série de bandes dessinées "Les futurs de Liu Cixin". Bien que le médium de la bande dessinée puisse (me) sembler, à première vue, peu adapté à l'exposition de théories élaborées, il se révèle être un vecteur puissant pour synthétiser les concepts aussi bien esthétiquement et atteindre le "casual reader" que je suis actuellement. Les raccourcis graphiques employés permettent de savourer un récit captivant tout en caressant l'œil d'un style graphique à chaque tome différent.

    (🎧 Accompagnement acoustique à cette découverte, j'ai eu le plaisir de lire ces bandes dessinées en écoutant des vinyles de space opera progressif, tels que "ILION" du groupe SLIFT ou "Welcome To The Machine" des Lausannois Monkey3. )

     Il s'agit de l'adaptation de quinze nouvelles de l'auteur, une démarche originale caractérisée par une production initiée en Chine avec une perspective internationale dès le commencement du projet. Ces adaptations ont été confiées à des auteurs de bande dessinée issus de différents pays.

    Le tome 3 "Les trois lois du monde" de Xiaoyu Zhang 📚 mérite un mention spéciale: il aborde le thème de la transmission du savoir et le rôle de l'enseignant, comme le suggère la citation : «  On dit parfois que les enseignants sont des bougies qui se consument à petit feu pour éclairer les autres. »

    Cette histoire, qui met en lumière l'importance de partager la connaissance et le dévouement des enseignants, m'a parlé de manière particulière. Elle m'a rappelé certains de mes amies et collègues enseignants, qui, chacun à leur manière, contribuent à dissiper les ombres de l’ignorance. 😉

    Une belle découverte. Je recommande vivement cette aventure littéraire et graphique à tout amateur de science-fiction et de BD.

    #lecture #BD

    Ma config zsh

    J’ai, donc, passé tout mon bazar en zsh 😀 en venant renforcer le front bien nourri des sysadmins, développeurs et blogueurs ayant franchi le pas.

    Il faut dire qu’à ce trend comme à ma décision, a fortement contribué l’annonce du passage à zsh comme shell par défaut de macOS et Kali Linux, les deux systèmes que j’utilise le plus.

    Dans le respect de cette tendance, je détaille ici mon fichier de configuration .zshrc ainsi que les options et gadgets introduits au fil des des expériences d’utilisation.

    Si vous n’avez pas encore franchi le pas et vous voulez changer votre shell par défaut pour zsh, vous pouvez utiliser la commande chsh:

    chsh -s /bin/zsh

    Quelques annotations techniques en préambule:

    Dans macOS, à la place de l’émulateur proposé par défaut, j’utilise l’excellent iTerm2 qui propose des intégrations fort pratiques comme les notifications, la recherche contextuelle dans lhistorique et des utilitaires de gestion de fichiers en cli

    Pour la partie “pimp” j’utilise le thème powerlevel10k

    Pour pouvoir jouir de l’agrément graphique apporté par les symboles des services (comme github par ex.) et des systèmes d’exploitation dans la barre de statut du shell, il faut installer une police de caractère prenant en charge ces icônes. Dans mon cas j’ai choisi une version patché de la police FireCode appartenant à la collection Nerd Fonts Cette version particulière de FireCode a été opportunément patché pour afficher le dragon de Kali 😀👍

    Comme éditeur de texte j’utilise vim (oui, j’ai appris à en sortir 😂), pour optimiser sa présentation je renseigne son fichier de configuration .vimrc

    set hlsearch " met en évidence tous les résultats de la recherche
    set ignorecase " recherche insensible à la casse 
    set incsearch " affiche les résultats de la recherche de manière incrémentielle
    set number " affiche le numéro de ligne
    set noswapfile " Désactiver le fichier d'échange (swap)
    

    Je complète les fonctionalités de base du système avec les outils & gadgets en ligne de commande suivants:

    cheat cheatsheets en cli

    thefuck magnifique correction de la commande précedente 😀

    broot (pour macOS via Homebrew ➡️ brew install broot) pour naviger dans les dossiers (tree view)

    speedtest-cli (pour macOS via Homebrew ➡️ brew install speedtest-cli)

    Disk Usage/Free (pour macOS via Homebrew ➡️ brew install duf)

    HSTR -HiSToRy- (pour macOS via Homebrew ➡️ brew install hstr)

    duck le CLI de cyberduck (pour macOS via Homebrew ➡️ brew install duck)

    noti (pour macOS via Homebrew ➡️ brew install noti)

    fd alternative à find (pour macOS via Homebrew ➡️ brew install fd )

    The Silver Searcher alternative rapide à find pour chercher dans le code (pour macOS via Homebrew ➡️ brew install the_silver_searcher)

    et encore sous macOS:

    brew install wget alternative à curl

    brew install fortune pour les citations de la vachette

    brew install cowsay la vachette parlante/pensante


    voilà mon fichier de config macOS/linux .zshrc

    #cowsay
    cowsay "$(fortune -s)" | lolcat
    
    # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
    # Initialization code that may require console input (password prompts, [y/n]
    # confirmations, etc.) must go above this block; everything else may go below.
    if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
      source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
    fi
    
    setopt AUTO_CD
    setopt BEEP
    #setopt CORRECT
    setopt HIST_BEEP
    setopt HIST_EXPIRE_DUPS_FIRST
    setopt HIST_FIND_NO_DUPS
    setopt HIST_IGNORE_ALL_DUPS
    setopt HIST_IGNORE_DUPS
    setopt HIST_REDUCE_BLANKS
    setopt HIST_SAVE_NO_DUPS
    setopt HIST_VERIFY
    # https://superuser.com/questions/232457/zsh-output-whole-history
    setopt EXTENDED_HISTORY
    setopt INC_APPEND_HISTORY
    setopt INTERACTIVE_COMMENTS
    setopt MAGIC_EQUAL_SUBST
    setopt NO_NO_MATCH
    setopt NOTIFY
    setopt NUMERIC_GLOB_SORT
    setopt PROMPT_SUBST
    setopt SHARE_HISTORY
    setopt histignorespace           # skip cmds w/ leading space from history
    
    HISTFILE="$HOME/.cache/zsh_history"
    HIST_STAMPS=mm/dd/yyyy
    HISTSIZE=5000
    SAVEHIST=5000
    ZLE_RPROMPT_INDENT=0
    WORDCHARS=${WORDCHARS//\/} # Don't consider certain characters part of the word
    export HISTTIMEFORMAT="[%F %T] "
    
    # hide EOL sign ('%')
    PROMPT_EOL_MARK=""
    
    # ZSH completion system
    autoload -Uz compinit
    # -U history-search-end https://unix.stackexchange.com/questions/97843/how-can-i-search-history-with-text-already-entered-at-the-prompt-in-zsh
    autoload -U history-search-end
    zle -N history-beginning-search-backward-end history-search-end
    zle -N history-beginning-search-forward-end history-search-end
    
    compinit -d ~/.cache/zcompdump
    zstyle ':completion:*:*:*:*:*' menu select
    zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
    zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
    
    # configure key keybindings
    bindkey -e                                        # emacs key bindings
    bindkey ' ' magic-space                           # do history expansion on space
    bindkey '^[[3;5~' kill-word                       # ctrl + Supr
    bindkey '^[[3~' delete-char                       # delete
    bindkey '^[[1;5C' forward-word                    # ctrl + ->
    bindkey '^[[1;5D' backward-word                   # ctrl + <-
    bindkey '^[[5~' beginning-of-buffer-or-history    # page up
    bindkey '^[[6~' end-of-buffer-or-history          # page down
    bindkey '^[[H' beginning-of-line                  # home
    bindkey '^[[F' end-of-line                        # end
    bindkey '^[[Z' undo                               # shift + tab undo last action
    ## bindkey for hstr control-r
    bindkey -s "\C-r" "\C-a hstr -- \C-j"
    #binfkey for history search https://unix.stackexchange.com/questions/97843/how-can-i-search-history-with-text-already-entered-at-the-prompt-in-zsh
    bindkey "^[[A" history-beginning-search-backward-end
    bindkey "^[[B" history-beginning-search-forward-end
    
    # force zsh to show the complete history
    # https://www.dontclickthis.run/zsh-expanded-history/
    #   alias history="history 0"
        alias ls='ls --color=auto'
        alias ls='lsd --group-dirs first'
        alias treenav='broot'
        alias lstree='lsd --tree'	
        alias btop='btm -cT'
        alias bat='bat --theme=ansi-dark'
        alias cat='bat --pager=never'
        alias sc="source $HOME/.zshrc"
        alias c='clear' 
        #alias dir='dir --color=auto'
        #alias vdir='vdir --color=auto'
    
        #upgrade Powerlevel10k
        alias p10kup='git -C ~/powerlevel10k pull'
    
        alias grep='grep --color=auto'
        alias fgrep='fgrep --color=auto'
        alias egrep='egrep --color=auto'
        alias diff='diff --color=auto'
    #    alias ip='ip --color=auto'
        alias mylocalip="ifconfig en0 inet | grep 'inet ' | awk ' { print $2 } '"
    
    ## INTERNET meteo widgets wttr.in    
        alias meteo='curl -H "Accept-Language: fr" wttr.in'
        alias meteo2='curl -H "Accept-Language: fr" v2.wttr.in'
    ## INTERNET current public IP address
        alias myip='curl http://ipecho.net/plain; echo'
        alias myip2='curl icanhazip.com'
        alias myip3="dig +short myip.opendns.com @resolver1.opendns.com"
    ## INTERNET sppedtest (from brew)
        alias speedtest='speedtest-cli'
        alias hh=hstr
    ## better find (via brew)
        alias find=fd
    ## better grep (via brew)
        alias sgrep='ag'
    ## get rid of command not found ##
       alias cd..='cd ..'
     
    ## a quick way to get out of current directory ##
       alias ..='cd ..'
       alias ...='cd ../../../'
       alias ....='cd ../../../../'
       alias .....='cd ../../../../'
       alias .4='cd ../../../../'
       alias .5='cd ../../../../..'
    
    # macOS aliasses
    if [[ $OSTYPE == darwin* ]]; then
        alias flush='dscacheutil -flushcache'
    # Apps
        alias browse="open -a /Applications/Brave\ Browser.app/"
        alias preview='open -a "Preview"'
    # suffix aliases on the mac
        alias -s flac=open
        alias -s mp3=open
        alias -s ogg=open
        alias -s wav=open
        alias -s avi=open
        alias -s mpeg=open
        alias -s mpg=open
        alias -s wmv=open
        alias -s bmp=open
        alias -s png=open
        alias -s jpg=open
        alias -s jpeg=open
        alias -s gif=open
        alias -s pdf=open
        alias -s org=$BROWSER
        alias -s com=$BROWSER
        alias -s net=$BROWSER
        alias -s html=$BROWSER
    # network
        alias mylocalip="ifconfig en0 inet | grep 'inet ' | awk ' { print $2 } '"
    # cyberduck via brew
        alias ftp='duck'
    # integration iTerm2 
        test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh"
    fi
    
        export LESS_TERMCAP_mb=$'\E[1;31m'     # begin blink
        export LESS_TERMCAP_md=$'\E[1;36m'     # begin bold
        export LESS_TERMCAP_me=$'\E[0m'        # reset bold/blink
        export LESS_TERMCAP_so=$'\E[01;33m'    # begin reverse video
        export LESS_TERMCAP_se=$'\E[0m'        # reset reverse video
        export LESS_TERMCAP_us=$'\E[1;32m'     # begin underline
        export LESS_TERMCAP_ue=$'\E[0m'        # reset underline
    
        # Take advantage of $LS_COLORS for completion as well
        zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
    
    # some more ls aliases
        alias ll='ls -l'
        alias la='ls -A'
        alias l='ls -CF'
    
    export VISUAL=vim
    export EDITOR=$VISUAL
    export HSTR_CONFIG=hicolor
    
    eval $(thefuck --alias)
    source ~/powerlevel10k/powerlevel10k.zsh-theme
    source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh
    source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
    # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
    [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
    export PATH="/usr/local/sbin:$PATH"
    

    Le résultat visuel dans MacOS:

    Le résultat visuel dans Kali Linux

    Mis à part le côté satisfaisant pour l’œil du tuning graphique, à l’usage, je suis trés content du résultat notamment par les prestations et les avantages apportés par ce shell comme l’historique partagé entre les différentes consoles et l’autocomplétion des commandes, par ex.

    Un seul petit problème à l’actif, rencontré sous macOS qui se manifestait par un lag de quelques seconds lors du premier lancement du terminal pour arriver à l’invite de commande du shell, probablement causé par la routine de mise à jour du thème qui s’effectue à chaque démarrage.

    J’ai pu résoudre en mesurant les performances au boot et en installant une version de git indépendant du -trés lourd- xcode.

    Death Stranding

    Presque une année pour « platinér » ce chef-d’œuvre qui redéfinit, à mon avis, le storytelling dans le monde des jeux vidéos

    Ce fut un parcours passionnant, parfois introspectif, surtout dans cette période pandémique qui adhère parfaitement à l’histoire que 小島 秀夫 nous raconte et que soudain prends presque les couleurs d’une prophétie…

    Je ne me suis jamais ennuyé en 166 heures de jeu effectif, malgré le caractère intrinsèquement répétitif des livraisons (typiquemment pour obtenir les trophées), car les décors sont somptueux et enrichis d’une solitude vivante et connectée;

    À propos de connexion: un coup de génie l’interaction différée qui apporte une nouvelle approche à la collaboration dans le divertissement en ligne & multijoueur.

    Le tout mis en valeur par une bande-son exceptionnelle qui se manifeste en parfaite symbiose aux situations et événements de la vie d’un porteur.

    J’ai recueilli ici quelque image prise au fil de cette belle expérience Hideo-ludique. (⚠️ attention spoilers inside)

    XCSSET: un malware pour macOS qui se sert de Xcode

    Un autre palier qualitatif dans la conception des malwares pour macOS a été franchi avec la découverte par l’équipe de chercheurs de Trend Micro de ce spécimen nommé XCSSET

    Informations techniques XCSSET par Trend Micro - Copie locale Informations techniques XCSSET

    Même si l’exploitation de l’environnement de développement Xcode n’est pas nouvelle dans la pratique (par ex. l’attaque XcodeGhost de 2015) ou dans la “philosophie” d’attaque

    Document tiré des révélations d’Edward Snowden “Strawhorse: Attacking the MacOS and iOS Software Development Kit”

    ni l’étendue apparente de cette attaque, qui se limiterait pour l’instant à deux dépôts github, ne semble important;

    ragulSimpragma/twitterTask

    yimao009/MVC-MVP-MVVM

    les deux repositories infectée selon la recherche

    l’utilisation ce vecteur d’attaque avec l’investissement de deux 0-day au passage, mettent en evidence une interet accru de ces acteurs pour une “entrée dérobée” dans l’écosystème verrouillé Apple ainsi que les moyens conséquents auxquels ils ont désormais accès.

    Ici le descriptif des deux Zero-day

    Au sujet de la première faille relative au contournement du sandbox, permettant l’accès aux cookies de Safari via sshd: cette anomalie facilement reproductible avait été remarquée et détaillée en 2018:

    The vulnerability in Remote Login (ssh) persists

    Mojave’s security “hardening” | User protections could be bypassed

    du point de vue technique, intéressant aussi la mixité d’approche dans les différents modules du payload avec l’utilisation notamment du language AppleScript natif macOS pour interagir avec le système et créer les autres composants nécessaires à l’infection et au contrôle à distance.


    update 20/08 ajout liens décrivant le contournement via sshd

    RockPi 4

    Mes modems et les failles (Cablehaunt et Puma6Fail)

    1977 Gli elaboratori elettronici nel mondo della produzione

    Durante una spedizione esplorativa nella biblioteca di famiglia mi sono imbattuto in una vera pepita.

    Percorrendo i bei volumi rilegati degli annuari della mitica Enciclopedia della Scienza e della Tecnica Mondadori, un articolo del’annata 1977 ha catturato il mio occhio informatico:

    Gli elaboratori elettronici nel mondo della produzione” del Professor emerito Mario G. Losano

    Il riquadro di presentazione mi ha colpito subito: nonostante la pagina ingiallita dal tempo sottolineasse egregiamente il senso del passar dei decenni, il testo sembrava scritto oggi:

    Il potere di chi detiene un sistema informatico;

    funzionalità dei grandi archivi, ma tutela della privacy;

    miglioramento della produzione, ma salvaguardia dei valori umani;

    i contrastanti problemi che i sistemi di elaborazione di dimensioni sempre piu piccole ma di potenza sempre piu grande di cui fruisce l’informatica inpongono alla società moderna

    l’incipt mi ha rassicurato sull’anno effettivo di pubblicazione evocando sistemi isolati dell’era pre-Internet (gustosi sotto questo aspetto gli scenari immaginati nell’evoluzione dei sistemi complessi e i pre-processors) pur mantenendo il valore profetico espresso in osservazioni come:

    …è ipotizzabile che, in un futuro forse non lontano, le singole isole automatizzate vengano collegate fra loro, in modo da formare complessi sistemi integrati. Fin da ora è quindi necessario porsi il problema dei danni che possono derivare all’individuo o alla società dall’erroneo funzionamento o dalla distruzione parziale o totale dei centri di calcolo.

    Seguito da un formidabile excursus sulla questione riservatezza, talmente attuale senza ricorrere a riferimenti romanzeschi, da sembrare veggenza

    In Conclusione, l’uso dell’elaboratore come strumento per il controllo totale degli individui è un pericolo effettivamente esistente in un futuro non immediato…

    vi si trattano già i fondamentali della sicurezza Informatica:

    • C.I.A.

    • Vulnerabilità dei sistemi complessi

    • Risk management approach

    vi si evoca il crimine informatico:

    Oggi la quota di computer crimes è ancora quasi irrlevante, tuttavia sarebbe opportuno che ogni polizia - seguendo l’esempio di Scotland Yard - disponesse di pochi specialisti aggiornati in questo campo, i quali siano in grado di consigliare le forme di prevenzione e di intervento piu opportune non appena se ne presenti la necessità.

    Rendo qui un piccolissimo omaggio riempito d’immenso rispetto per il genio analitico e divulgativo del professor Losano e tramite lui un omaggio ai pionieri della scienza della sicurezza informatica.

    Risorse:

    Indice annuario 1977

    http://www.mariolosano.it/Materiale/LosanoSaggi.htm

    Installation de Kali Linux 2016.2 (rolling edition release) sur un MacBook Pro 5,1


    La saga continue!

    Je vous avais décrit ici les opérations qui m’ont permis d’installer les différentes versions de la distribution Linux Kali sur un MacBook 15 « Late 2008 »

    Or le moment est arrivé de suivre l’évolution de ce système d’exploitation qui debout 2016 est passé sur un modèle de publication en continu (rolling release) et est arrivé récemment à sa deuxième version nommée 2.2016.

    Ce système dynamique permet dans l’ensemble de profiter plus rapidement des dernières versions logicielles et spécifiquement, dans le cas de cette distribution, de jouir des mises à jour pertinentes et soignées publiées par l’équipe offensive security.

    Après sauvegarde des données (contenues dans /home/) sur clé USB, j’ai, donc, décidé de partir sur une « clean install »

    Premier constat:

    Si rEFInd reconnais bien la clé d’installation générée à partir de l’image iso de Kali, le nouveau système d’installation à la sauce Debian provoque un joli kernel panic au chargement. (Cela se produit avec l’iso 2016.2 standard comme avec l’image plus récente compilée hebdomadairement.

    Raison pour laquelle j’ai opté pour la création d’une clé avec l’excellent logiciel Mac Linux USB loader

    La clé ainsi générée, avec un EFI adapté au Mac, permet le démarrage sur Kali en mode « live » directement depuis le « gestionnaire de démarrage »: cool, de bon augure, tout fonctionne!

    En partant de là: comment installer le système sur le disque dur du Mac maintenant que Kali ne propose plus l’application d’installation dédiée?

    Heureusement le système de démarrage généré sur la clé par le logiciel « Mac Linux USB loader » prévoit un fichier de configuration appelé « entreprise.cfg » situé dans le dossier /efi/boot qui se présente à l’édition ainsi:

    #This file is machine generated. Do not modify it unless you know what you are doing.
    
    autoboot 0
    entry Kali
    family Debian
    kernel /live/vmlinuz findiso=/efi/boot/boot.iso boot=live noconfig=sudo username=root hostname=kali
    
    entry Kali (installer)
    family Debian
    initrd /install/gtk/initrd.gz
    kernel /install/gtk/vmlinuz findiso=/efi/boot/boot.iso boot=live noconfig=sudo username=root hostname=kali
    

    Dans ce fichier, deux détails laissent présager l’heureuse possibilité de démarrer sur la procédure d’installation:

    1. la présence d’un flag autoboot qui permet de choisir l’option de démarrage préférée
    2. la correcte détection dans la deuxième « entry » de l’installeur

    j’ai, donc, procédé à l’édition de ce fichier, en modifiant le flag autoboot de 0 à 1 pour indiquer au système de démarrer sur la procédure d’installation.

    Bingo!

    la clé est encore reconnue directement par le gestionnaire de démarrage (touche alt au démarrage du mac)

    et il démarre directement sur le menu d’installation

    …sauf que la procédure d’installation se bloque lors du montage de l’iso contenant les paquets d’installation de base

    Toute tentative de monter l’iso via busybox par une des consoles est restée vaine: le système refuse de reconnaître le support

    Ce problème est même relaté dans le github du développeur

    Je me suis donc résigné à graver un bon vieux dvd old-school.

    Étant le « late 2008 » un des derniers modèles à posséder un « superdrive », une fois démarré par clé et bloqué sur la phase de montage du CD-ROM, j’ai pu insérer le DVD.

    et à la deuxième détection… BOOM! DVD reconnu! l’installeur a pu compléter la copie des fichiers de base et terminer ainsi l’installation correctement.

    Deux bonnes surprises au premier démarrage: le système présente la fenêtre de login très rapidement et …alléluia! la carte graphique est reconnue d’office: plus besoin d’installer les pilotes propriétaires Nvidia.

    Seul petit bémol: pas de son.

    Il suffit d’activer pulseaudio par la ligne de commande suivante:

    systemctl --user enable pulseaudio && systemctl --user start pulseaudio

    suivi par un redémarrage.

    Tout fonctionne: l’ergonomie, la facilité d’accès et le choix de logiciels spécifiques de cette dernière version sont vraiment remarquables.

    The classic xkcd's sudo revisited (OSX 'El Capitan' update)

    System Integrity Protection is a security feature of Apple’s macOS operating system introduced in OS X El Capitan

    added text made with xkcd-font

    ( ͠° ͟ʖ ͡°) Big iot Ꙭ conceptual mosaic

    Installer Kali Linux sur un Macbook Pro 5,1 (15-inch, Late 2008)

    categories:

    • archive tags:
    • kali
    • linux
    • Mac
    • macbook
    • howto

    Dans cet article je vais décrire les passages qui m’ont permis d’installer Kali Linux amd64 en natif sur un Mac Book Pro doté d’une CPU intel Core 2 Duo 2.40GHz (P8600 « Penryn ») 4 GB de RAM, 500GB de disque dur et NVIDIA GeForce 9600M GT & GeForce 9400M comme cartes graphiques

    Cette machine dont les caractéristiques sont désormais juste suffisantes pour faire tourner (péniblement) la dernière mouture de OSX est en revanche plus que suffisante pour faire tourner confortablement un Linux.

    J’ai choisi Kali Linux pour sa spécialisation orientée pentest, administration systèmes et réseau, néanmoins, étant cette distribution Linux basée sur Debian, cette procédure devrait aussi permettre installation d’autres versions dérivées comme Ubuntu ou la magnifique ElementaryOS

    Les défis:

    Dans la pratique deux obstacles s’interposent à cette réalisation

    1. Le premier lié au caractère spécifique du micrologiciel EFI qui équipe tous les produits de la pomme. En effet ce système ne reconnait pas les « démarreurs » et les partitions Linux.

    2. L’autre obstacle dépend du matériel et notamment la carte graphique qui est prise en charge de manière incorrecte par l’assistant d’installation par défaut.

    En effet, si désormais pratiquement toutes les composantes sont reconnues et prises en charge correctement par Debian (y compris les touches fonctions), les cartes graphiques restent notoirement problématiques.

    Solutions utilisées:

    Afin de contourner les deux obstacles précédemment illustrés, j’ai utilisé les solutions suivantes:

    • Un disque dur externe installé avec OSX 10.9 et  sur le quelle j’ai déployé la solution rEFInd

    Ce gestionnaire de démarrage, qui s’installe au tout début du disque dur, étant reconnu par l’EFI Apple permet de bypasser la problématique du firmware EFI précédemment évoquée.

    En effet, ce dernier est reconnu par le gestionnaire de démarrage des Macs comme une partition bootable portant le nom « EFI Boot » donnant ainsi accès au système de choix du disque de démarrage rEFInd qui, lui, est capable de reconnaitre des disques/USB d’installation Linux (et dérivés)

    Les deux premières icônes avec le « badge disque dur » indiquent les systèmes installés en local sur le disque dur de la machine. (Kali dans mon cas + partition boot en FAT)

    Les quatre portant le « badge USB » montrent les systèmes connectés par câble (deux OSX + 1 image « Bootable utilitieas » sur mon disque dur externe et le disque d’installation Kali Linux fourni par mon smartphone)

    Autre solution utilisée dans cette première phase de démarrage/installation consiste dans mon smartphone Andorid équipé du formidable logiciel DriveDroid qui permet de fournir, comme ferait une clé USB préparée ad hoc, des images iso de démarrage pour l’installation.

    Dans mon cas j’ai utilisé les images de systèmes suivants:

    “Kali-linux-1.0.6-amd64-iso” Pour installer Kali Linux

    (UPDATE 03/2015 version actuelle testée [kali-linux-1.1.0a-amd64.iso)

    gparted Live Pour le partitionnement initial du disque dur de la machine

    Supergrub Ce petit live cd permets de choisir et éditer le fichier de boot Linux (correction de la configuration par défaut installé par Kali)

    • Pour ce qui concerne le pilote graphique: le problème se situe au niveau du pilote non propriétaire proposé par défaut en présence de la carte graphique Nvidia

    En effet, en cohérence avec la vocation libriste de Debian, le système d’installation propose le pilote libre « Nouveau » or , hélas, ce dernier ne gère pas correctement nos cartes graphiques, ce qui provoque le plantage de l’environnement de bureau.

    Pour remédier à cette défaillance, il faut, donc , utiliser le pilote propriétaire mis à disposition par NVIDIA sur le site dédié :http://www.geforce.com/drivers

    En sachant que nos cartes graphiques sont la GeForce 9600M GT et la GeForce 9400M  appartenant, donc, à la série 9M et que notre CPU est bien en 64-bit:

    Nous obtenons, par le moteur de recherche du site, la toute dernière version du pilote que nous utiliserons dans la dernière partie de l’installation.

    Procédure utilisée:

    • Démarrage de l’utilitaire gparted Live à partir du rEFInd présent sur le disque externe OSX 10.9  à fin de procéder au partitionnement du disque dur interne du MacBook Pro

    NB: cette opération aurait pu être accomplie directement pas l’installeur Kali: j’ai préféré utiliser GParted parce que je trouve cet outil bien plus efficace et pour le côté sombre de la force…

    NB2: 8.38 de Swap c’est un « poil » overkill… mais je suis old-school 🙂

    J’ai créée une petite (200Mo) partition en FAT32 chargée d’héberger la solution de démarrage rEFInd locale

    Cette dernière permet d’optimiser la séquence de boot de notre système: Apple EFI –> rEFInd (sur sda1) –> GRUB –> Linux (sur sda2)

    •  Une fois le partitionnement terminé, redémarrer en utilisant le procédé décrit précédemment, sur l’image d’installation de Kali

    À ce stade, il est important de choisir l’option d’installation simple (en mode textuelle) et pas graphique au vu des problèmes d’affichage précédemment évoqués.

    Une fois l’installation terminée, j’ai redémarré sur l’utilitaire « Supergrub2 » à fin de contrôler la configuration actuelle , désactiver le pilote Nouveau installé par le système lors de la détection matérielle du logiciel d’installation et démarrer sur la bonne partition.

    Opération réalisée par l’option d’édition (e) fournie par ce même utilitaire pour la session en cours:

    Une fois le système chargé, avec ma belle session root à disposition,  j’ai pu rendre le changement définitif par le biais de l’édition de ce même fichier de configuration grub

    root@kali:~#sed 's/quiet/quiet nouveau.modeset=0/g' -i /etc/default/grub root@kali:~#update-grub

    J’ en ai profité pour le nettoyer définitivement avec le commande:

    sudo apt-get --purge remove xserver-xorg-video-nouveau

    Par la suite, afin de pouvoir démarrer automatiquement mon Kali sans devoir m’appuyer sur le disque OSX/rEFInd ou Supergrub2 externe, j’ai procédé aux manipulations suivantes:

    – création d’un dossier specifique à mon « démarreur » rEFInd

    mkdir /boot/efi

    – montage de la partition FAT32 dans ce dossier

    mount /dev/sda1 /boot/efi

    – Téléchargement de l’installeur rEFInd

    wget http://sourceforge.net/projects/refind/files/0.7.8/refind-bin-0.7.8.zip/download -O refind-bin-0.7.8.zip

    – installation rEFInd par le biais du script install.sh contenu dans le paquet

    unzip refind-bin-0.7.8.zip

    cd refind-bin-0.7.8.zip/

    ./install.sh

    et la magie opère

    Installing rEFInd on Linux....
    ESP was found at /boot/efi using vfat
    Copied rEFInd binary file refind_x64.efi
     
    Copying sample configuration file as refind.conf; edit this file to configure
    rEFInd.
     
    Installation has completed successfully.
    

    Mon « démarreur » est prêt il ne me reste qu’optimiser en effaçant la version 32bit ici inutile

    rm /boot/efi/EFI/BOOT/bootia32.efi

    et le configurer

    nano /boot/efi/EFI/BOOT/refind.conf

    Pour réduire le temps d’attente avant démarrage sur la partition par défaut

    # Timeout in seconds for the main menu screen. Setting the timeout to 0

    # disables automatic booting (i.e., no timeout).

    #

    timeout 5

    et appliquer un joli thème minimaliste à fond blanc qui s’intègre parfaitement au graphisme de démarrage de OSX:

    en ajoutant la ligne

    include minimal-theme/theme.conf

    dans ce même fichier après l’avoir téléchargé ici:

    cd /boot/efi/EFI/BOOT/

    wget http://github.com/EvanPurkhiser/rEFInd-minimal/archive/master.zip

    mv rEFInd-minimal-master minimal-theme

    Source: https://github.com/EvanPurkhiser/rEFInd-minimal

    • Le moment est venu d’installer le pilote graphique proprietaire pour nos cartes Nvidia.

    On prépare le terrain en installant les outils de compilation:

    sudo apt-get install linux-headers-$(uname -r) build-essential

    et on installe:

    wget us.download.nvidia.com/XFree86/Linux-x86_64/340.76/NVIDIA-Linux-x86_64-340.76.run

    chmod 777 NVIDIA-Linux-x86_64-340.76.run

    ./NVIDIA-Linux-x86_64-340.76.run

    (pour l’adresse de téléchargement, je me suis référé au lien du bouton « Download » du moteur de recherche présent sur le site geforce.com)

    Il suffit de suivre les indications à l’écran en confirmant les options par défaut pour amener l’installation à bon port.

    Un petit reboot …et hop une belle fenêtre de login nous permet d’accéder à notre bureau Gnome à la sauce piquante Kali

    Version testé Kali Linux 1.1.0 ( 3.18.0-kalil-amd64 ) + Nvidia Driver 340.76


     

    Bonus : J’ai testé cette méthode d’installation avec succès sur un xServe (Early 2009) avec Suse Linux Enterprise Server – Recyclage Power!! –

    Pas besoin des pilotes graphiques :-), il faut juste choisir Grub à la place de ELILO via l’utilitaire de configuration YaST2

    Linux Distrofight 2014

    categories:

    • archive tags:
    • distrofight
    • linux
    • image
    • fun
    • meme

    inspired by https://i.imgur.com/qgLh1fT.jpg

    Raspberry Pi comme service web d`agrégation d`informations RSS

    categories:

    • archive tags:
    • raspberrypi
    • rss
    • newsreader

    Dans ce document je vais détailler les opérations nécessaires à la mis en place d’un lecteur web de flux d’informations à la “Google Reader” sur Raspberry Pi

    Ce service permet d’afficher dans une seule page web les informations à jour de tous vos abonnements RSS avec la possibilité de les organiser par TAG, et effectuer de recherches, ou définir de favoris.

    Choix de l’application

    J’ai choisi la solution web Selfoss pour plusieurs raisons:

    • Projet open source
    • Une interface claire et complète avec support pour l’affichage sur les appareils mobiles
    • Présence d’un moteur de recherche interne et des options de partage habituelles (twitter, mail, instapaper,…)
    • Présence d’un assistant facilitant l’importation de flux depuis “Google Reader”
    • Solution très légère, donc adaptée aux spécifications techniques du Raspberry Pi

    Choix du serveur web et du serveur de base de données

    Un aggregateur de news effectue par définition un travail constant de récupération et organisation des informations en arrière-plan ce qui peut représenter une charge importante pour le serveur selon les nombres des flux RSS suivis.

    Il faillait ,donc, optimiser la partie mise à disposition de l’information pour ne pas alourdir davantage la solution.

    Le choix s’est donc porté naturellement sur le serveur web NGINX qui est réputé pour son utilisation parcimonieuse de la RAM tout en gardant de prestations très élevées. La même motivation a orienté le choix du moteur de base de données vers SQLITE qui présente l’avantage de ne pas nécessiter d’un serveur proprement dit.

    Préparation de Raspbian pour une utilisation serveur

    Optimisation matérielle

    Afin d’adapter un OS plus tôt pensé pour une utilisation desktop j’ai procédé à quelques opérations de “tuning” au niveau de l’allocation de ressources et des services installés.

    Allocation de tout l’espace disque au système et baisse de la mémoire dédiée au GPU à 16 MB

    Dans les opérations de base on s’assurera d’avoir procédé aux mises à jour du firmware / système et d’avoir déjà effectué l’attribution de tout l’espace disque de la carte SD au système par le biais de l’option “expand-rootfs” de l’utilitaire en ligne de commande raspi-config

    Au niveau de l’optimisation matérielle, étant donné que nous allons pas utiliser l’affichage graphique, nous pouvons diminuer la taille de mémoire destiné à la GPU

    Cette opération est réalisable toujours par l’utilitaire raspi-config avec son option “memory_split” (ou l’édition manuelle du fichier de config /bott/config.txt)

    L’utilitaire affichera la question “How much memory should the GPU have?” avec un champ de saisie qui nous permet de spécifier 16MB (taille minimal)

    N. B. Cette opération est pensée uniquement pour une utilisation “serveur headless”; si vous souhaitez quand même accéder à votre lecteur de news par le navigateur web du raspi il ne faut pas effectuer cette opération

    Nous pouvons aussi effectuer de l’optimisation au niveau du CPU afin de garantir de meilleures performances notamment si nous prévoyons de mises à jour fréquentes de flux RSS

    J’ai donc procédé à l’overclock du CPU à 800 Mhz constants (turbo mode activé) ainsi que la définition de fréquences core et sdram par l’édition du même fichier /boot/config.txt avec la ligne de commande:

    echo -e "arm_freq=800\nsdram_freq=450\ncore_freq=350\nforce_turbo=1" >> /boot/config.txt

    N. B. Cette configuration a été testée comme étant sûre par la communauté et ne nécessite pas de dissipateur thermique sur le processeur

    Optimisation logicielle

    Au niveau de l’optimisation logicielle j’ai procédé à la désinstallation des toutes les composantes liées à l’environnement “desktop” (interface, applications graphiques…)

    sudo aptitude purge xserver-xorg xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-synaptics xserver-xorg-video-fbdev xserver-common xpdf xinit x11-common x11-utils x11-xkb-utils xarchiver screen pcmanfm penguinspuzzle lxde-common lxappearance lxde-icon-theme lxinput lxmenu-data lxpanel lxpolkit lxrandr lxsession lxsession-edit lxshortcut lxtask lxterminal leafpad dillo galculator gnome-icon-theme gnome-themes-standard gnome-themes-standard-data gpicview hicolor-icon-theme
    

    Et au nettoyage des fichiers de configuration orphelins ou les locales inutilisées (manuels en langues étrangères, fichiers de localisations…)

    aptitude purge ~c

    aptitude -R install localepurge && localepurge

    Installation des serveurs

    sudo aptitude -R install nginx sendmail openssl ssl-cert php5 php5-dev php5-gd php5-fpm php5-cli php5-sqlite php5-curl php5-common php5-cgi php5-mysql sqlite php-pear php-apc autoconf automake autotools-dev libapr1 libtool curl libcurl4-openssl-dev php-xml-parser
    

    Configuration du serveur NGINX

    J’ai commencé par préparer le dossier de publication destiné à accueillir notre lecteur RSS Selfoss

    sudo mkdir /var/www/selfoss sudo sudo chown -R www-data:www-data /var/www/selfoss cd /var/www/selfoss

    Et procédé au téléchargement de la dernière version:

    sudo wget http://selfoss.aditu.de/selfoss-2.7.zip sudo unzip selfoss-2.7.zip

    N. B. La dernière version stable est toujours dispo ici: https://github.com/SSilence/selfoss/archive/master.zip

    En suivant la documentation de Selfoss, j’ai ajusté les droits d’accès sur certains dossiers de la solution.

    sudo chmod a+w data/cache data/favicons data/logs data/thumbnails data/sqlite public/

    Pour la configuration du serveur, je me suis basé sur le magnifique exemple d’implémentation Ngnix spécialement adapté pour Selfoss, disponible ici:

    https://gist.github.com/Mic92/4091461

    J’ai donc copié et adapté cette configuration dans un nouveau fichier créer empressement dans le dossier dédié de Nginx

    sudo nano /etc/nginx/sites-available/selfoss

    Ne pas oublier d’effacer le fichier de configuration par défaut.

    sudo rm /etc/nginx/sites-enabled/default

    et créer le nouveau lien symbolique nécessaire à la publication effective de mon site

    sudo ln -s /etc/nginx/sites-available/selfoss /etc/nginx/sites-enabled/selfoss

    Comme nous somme à la pointe de la technologie actuelle 😀 et que dans le fichier de configuration nous avons spécifié ( listen [::]: ) que le serveur écoute aussi en ipv6, il ne faut pas oublier de l’activer dans notre Raspbian:

    sudo modprobe ipv6 sudo echo -e "ipv6" >> /etc/modules

    Source: http://www.raspbian.org/RaspbianFAQ#How_do_I_enable_or_use_IPv6.3F

    Pour contrôler si le protocole est correctement pris en charge:

    sudo sysctl -a | grep net.ipv6

    Autres petites adaptations à appliquer sur le configuration pour qu’elle colle parfaitement à notre serveur:

    Dans /etc/ngix/site-enabled/selfoss changer l’entrée

    location ~ \.php$ {                                                                                                                           
               astcgi_pass backend;
    

    par

    location ~ \.php$ {                                                                                                              
              fastcgi_pass unix:/var/run/php5-fpm.sock;</pre>
    

    et

    server_name rss.yourdomain.com;

    par le nom ou l’adresse IP correspondant à votre raspi.

    Comme notre configuration prévoit l’accès au site en https afin de sécuriser’identification par mot de passe, nous allons créer notre certificat de cryptage.

    sudo mkdir /etc/nginx/ssl sudo openssl req -new -x509 -nodes -out server.crt -keyout server.key sudo chmod 600 server.key

    Nous allons renseigner l’emplacement de ces fichiers dans le fichier de config /etc/nginx/sites-available/selfoss de suite à l’entrée listen [::]:443 ssl;

    ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key;

    Nous y sommes presque! Dernière configuration liée à la solution selfoss: c’est le moment de déclarer la fréquence des mis à jour de flux RSS. Comme j’aime avoir l’info la plus fraiche possible, je vais, dans mon cas configurer un refresh tous le 15 minutes

    Il suffit de créer une entrée dans /etc/crontab

    15 *    * * *   root        /usr/bin/php /var/www/selfoss/update.php
    

    et voilà nous somme prêts!

    c’est le moment de démarrer le moteur:

    sudo service php5-fpm start

    sudo service nginx start

    Configuration de Selfoss

    Nous pouvons à présent passer à la toute dernière partie de personnalisation de l’application web. Cette opération est très simple puisque notre environnement (Nginix+Sqlite) est pris en charge en natif par la solution.

    Il nous reste que créer un compte pour protéger l’accès et importer nos abonnements RSS/ATOM stockés sur Google Reader.

    Pas de problèmes, l’interface web nous guide dans les démarches.

    Création et enregistrement du login / mot de passe

    Il suffit de pointer notre navigateur web vers https://adresse_de_votre_raspi/password

    Une page de création de mots de passe permet de traduire le mot de passe souhaité dans le format (hash) attendu par la solution dans son fichier de configuration

    /var/www/selfoss/config.ini

    *N.B. si ce fichier n’existe pas il suffit de le créer à partir du modèle fourni /var/www/selfoss/default.ini par la ligne de commande:

    sudo cp /var/www/selfoss/default.ini /var/www/selfoss/config.ini

    Il suffit de copier la chaîne de caractères proposée dans le champ “Generated password” et le copier dans l’entrée “password” du fichier /var/www/selfoss/config.ini*

    Importation des abonnements présents sur un compte Google Reader

    Là aussi Selfoss nous propose un assistant qui nous guide dans le processus:

    Il suffit de pointer notre navigateur web vers https://adresse_de_votre_raspi/opml

    Cliquer sur le lien “Google Reader Export” pour démarrer l’exportation des abonnements à partir de votre compte Google (authentification nécessaire)

    Ensuite, uploader le fichier généré par l’opération précédente par le biais du bouton d’importation.

    Une fois lancée par l’option “Deliver my OPML!” la magie opère et après un laps de temps qui varie selon le nombre de vos flux RSS (20 sec pour une centaine de flux dans mon cas) la page de garde s’affiche.

    Vous retrouverez tous vos abonnements classés convenablement par tag comme vous les aviez organisé dans votre compte “Google Reader”: Génial!

    Cet article est également disponible à cette adresse: http://swissraspberry.ch/doku.php?id=raspberry_pi_comme_service_web_d_agregation_d_informations_rss

    Xserve: gestion du LOM par ligne de commande

    categories:

    • archive tags:
    • cli
    • lom
    • xserve

    S’il y a quelque chose que je regrette du xserve , c’est bien le service LOM (Lights-Out Management).

    Ce magnifique (et caractériel) processeur dédié doté de son propre IP, permet d’effectuer des opérations de monitoring et surtout d’allumage et extinction de façon totalement indépendante du OS.

    Un outil indispensable si le système ne répond plus et vous n’avez pas d’accès physique au serveur.

    Habituellement pour interagir avec ce service, notamment pour définir le mot de passe d’accès ou accéder au monitoring graphique, le logiciel « Côntrole Serveur » est préconisé.

    Or avec la pratique on se rends vit compte que pour la partie de gestion d’alimentation, la seule manière vraiment efficace consiste à utiliser la ligne de commande dédiée ipmitool

    Je laisse ici, en guise de épitaphe (et surtout à porté de main pour les xserve encore en production) les lignes de commande pour effectuer l’allumage et l’extinction de la machine.

    ipmitool -H 10.x.x.10 -U admin -P PASSWORD chassis power off

    Pour éteindre le xserve (ou 10.x.x.10 est l’ip du LOM, et PASSWORD le mot de passe LOM )

    ipmitool -H 10.x.x.10 -U admin -P PASSWORD chassis power on

    Pour démarrer le xserve  (ou 10.x.x.10 est l’ip du LOM, et PASSWORD le mot de passe LOM )

    Cette ligne de commande n’est plus disponible dans OSX 10.7 et suivants, mais disponible ici ou installable depuis brew/macports.

    Si installée par ce biais il est important de spécifier l’option -I lanplus

    ipmitool <strong>-I lanplus</strong> -H 10.x.x.10 -U admin -P PASSWORD chassis status

    lors de la connexion avec le LOM, sous peine de voir la connexion échouer avec l’erreur:

    Authentication type NONE not supported
    Error: Unable to establish LAN session
    Error sending Chassis Status command

    NB L’extinction de la machine effectuée par LOM est équivalente à l’arrêt abrupt provoqué en tirant la prise. (dernier recours)

    …Et que le daemon afp CPUphage transformé en zombie unresponsive ne vous hante pas en l’absence du lom. Amen

    Extrait de la prière du macadmin

    ARD personnaliser la liste de commandes UNIX

    categories:

    • archive tags:
    • AppleRemoteDesktop
    • macadmin
    • liste
    • plist

    Apple Remote Desktop est un incontournable de la trousse d’outil de tout macadmin.

    Son champ d’action ne se limite pas à la prise de côntrole à distance, et s’il fallait citer dans la panoplie des actions possibles la plus puissante, le premier prix reviendrait sans autre à la possibilité de lancer facilement de lignes de commande ou scripts en modalité root sur plusieurs machines immédiatement ou en tâche programmée tout en ayant un retour précis et classifié des résultats obtenus.

    Cette option sobrement appelée Unix avec son icône Terminal dans la barre de tâche est fournie avec une collection de scripts de base très pratiques et joliment rangés.

    AARD_UNIX

    Dans ce même menu il est possible d’ajouter sa propre collection de scripts crées/trouvés amoureusement au fils des années.

    Cette sympathique option est limitée à la création d’entrées successives sans possibilité aucune d’organisation hiérarchique si effectuée par interface graphique.

    En effet pour parvenir à organiser ses propres scripts de la même façon que les menus par défaut, il faut mettre la main dans un fichier xml ad hoc.

    Ce dernier s’appelle UnixCommandTask.plist et se trouve dans la bibliothèque de l’utilisateur dans:

    ~/Library/Application\ Support/Remote\ Desktop/Presets/UnixCommandTask.plist

    La structure du fichier xml est relativement simple: une fois que l’on connaît l’organisation et la hiérarchie de balises nous pouvons l’adapter pour obtenir ce genre de résultat:

    Pour y arriver, observons la structure du fichier UnixCommandTask.plist de l’exemple précédent

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <array>
    	<dict>
    		<key>name</key>
    			<string>MON DOSSIER TOTO</string>
    		<key>state</key>
    <array>
    	<dict>
    		<key>name</key>
    			<string>MON SCRIPT DE LA MORT QUI TUE</string>
    		<key>state</key>
    	<dict>
    		<key>outputMode</key>
    		<true/>
    		<key>script</key>
    			<string>LA LIGNE DE COMMANDE</string>
    		<key>userSelect</key>
    			<integer>0</integer>
    	</dict>
    	</dict>
    	<dict>
    		<key>name</key>
    			<string>MON PETIT SCRIPT</string>
    		<key>state</key>
    	<dict>
    		<key>outputMode</key>
    		<true/>
    		<key>script</key>
    			<string>LA LIGNE DE COMMANDE 2</string>
    		<key>userSelect</key>
    			<integer>0</integer>
    	</dict>
    	</dict>
    </array>
    	</dict>
    	<dict>
    		<key>name</key>
    			<string>MON DOSSIER TITI</string>
    		<key>state</key>
    <array>
    	<dict>
    		<key>name</key>
    			<string>MON APPLESCRIPT</string>
    		<key>state</key>
    	<dict>
    		<key>outputMode</key>
    			<true/>
    		<key>script</key>
    			<string>LA LIGNE DE COMMANDE</string>
    		<key>userSelect</key>
    			<integer>0</integer>
    	</dict>
    	</dict>
    	<dict>
    		<key>name</key>
    			<string>MON SCRIPT PERL</string>
    		<key>state</key>
    	<dict>
    		<key>outputMode</key>
    			<true/>
    		<key>script</key>
    			<string>LA LIGNE DE COMMANDE 2</string>
    		<key>userSelect</key>
    			<integer>0</integer>
    	</dict>
    	</dict>
    </array>
    	</dict>
    </array>
    </plist>
    

    La logique est grosso modo la même qui gère la structure du code HTML: les dossiers comme le contenu sont délimités par de balises qui s’imbriquent les unes dans les autres selon la hiérarchie souhaitée.

    Si nous ouvrons cette même plist avec un éditeur de texte comme TextWrangler qui range le code de façon à qu’il soit lisible et en mettant en évidence la dépendance entre balises:

    Nous constatons que mes deux menus « MON DOSSIER TOTO » et « MON DOSSIER TITI » sont contenus dans la première balise qui se ferme à la fin de la plist avec .

    De la même façon en descendant dans la hiérarchie le menu « MON DOSSIER TOTO » est délimité par la balise  à l’intérieur de laquelle on trouve la balise  qui contiens les balises qui servent à délimiter à leur tour les submenus  « MON SCRIPT DE LA MORT QUI TUE » et « MON PETIT SCRIPT »

    En descendant encore nous trouvons les balises nécessaires à expliciter la ligne de commande ou le script.

    Si le script s’articule en plusieurs lignes il suffit de répéter les balises  sur autant de lignes que necessaire.

    En respectant ce système de « poupées rousses » il est possible d’imbriquer (par copier / coller par ex.) autant de scripts voulus selon la logique souhaitée.

    Vous pouvez télécharger la plist modèle ici:

    UnixCommandTask.plist

    De suite, en forme d’annexe, quelque script « grand classique » pour votre collection:

    • Le script pour « binder » les machines clientes à un serveur OpenDirectory
    computername="`scutil --get ComputerName`"
    configname=<strong>NOMSERVEUR</strong>
    dsconfigldap -f -a <strong>NOMSERVEUR</strong> -u <strong>ADMIN_OD</strong> -p <strong>PASSWORD</strong> -c $computername -n $configname -v
    
    dscl /Search -create / SearchPolicy CSPSearchPath
    dscl /Search -append / CSPSearchPath /LDAPv3/NOMSERVEUR
    dscl /Search/Contacts -create / SearchPolicy CSPSearchPath
    dscl /Search/Contacts -append / CSPSearchPath /LDAPv3/NOMSERVEUR
    
    killall DirectoryService
    

    En gras les variables à renseigner avec vos informations

    • L’applescript qui permet de simuler la saisie manuel du login/motdepasse et permettant ainsi l’ouverture d’ une session sur plusieurs ordinateurs à partir de la fenêtre de login
    osascript -e 'tell application "System Events" to keystroke "<strong>LOGIN_UTILISATEUR</strong>"'; \
    osascript -e 'tell application "System Events" to keystroke tab'; \
    osascript -e 'tell application "System Events" to delay 0.5'; \
    osascript -e 'tell application "System Events" to keystroke "<strong>MOTdePASSE</strong>"'; \
    osascript -e 'tell application "System Events" to delay 0.5'; \
    osascript -e 'tell application "System Events" to keystroke return'
    

    En gras les variables à renseigner avec vos informations

    • La ligne de commande pour changer le mot de passe d’un utilisateur locale sur la(e) machine(s)
    dscl . -passwd /Users/<strong>TON_USER</strong> <strong>TONNOUVEAUPASSWORD</strong>
    

    En gras les variables à renseigner avec vos informations

    • script pour changer la configuration IP du port principale d’une machine
    mainInt=$(networksetup -listnetworkserviceorder | \
    awk '/\(1\)/ {$1="";sub("^ ","",$0);print}')
    
    networksetup -setmanual "$mainInt" <strong>192.168.1.x 255.255.255.0 192.168.1.1</strong>
    

    En gras les variables à renseigner avec vos informations

    post speciale dédicace David « la tornade »

    Haters gonna hate


    a friend’s iPod 🙂

    Going Root!

    categories:

    • archive tags:
    • root
    • image
    • swiss

    ######Root#######

    photos credits to (K)Ralf Lengweiler

    Geeks and repetitive tasks

    categories:

    • archive tags:
    • geek
    • fun
    • image
    • automation

    Geek attitude 👍:

    classic internet graphic - original source unknown to me


    Risk 😅: source: xkcd - Automation

    One Less Thing…

    All credits goes to (K)Ralf Lengweiler (aka @tuzwit)