# -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@creator: jclain
##@created: 27/04/2016 03:19
##@modifier: jclain
##@changecount: 1
##@tags:
##@title: ussh

{{{
ussh: se connecter par ssh à un ou plusieurs hôtes

USAGE
    ussh [options] hosts
    ussh [options] @hostsfile
    ussh -r hosts
    ussh --parse hosts

OPTIONS
    hosts
    @hostsfile
        Spécifier un ou plusieurs hôtes distants sur lequels faire la connexion.
        Pour spécifier plusieurs hôtes, il faut les séparer par un espace ou le
        caractère ':', e.g. 'host1 host2' ou 'host1:host2'. Si la spécification
        contient les caractères { et }, l'expansion est effectuée, e.g
            'root@{host1,host2}.univ.run'
        La forme @hostsfile permet de lire la liste des hôtes depuis le fichier
        hostsfile, à raison d'un hôte par ligne.

Toutes les options de ssh sont reconnues. Les options longues suivantes sont
reconnues comme alias de certaines options courtes de ssh:
    --quiet
        alias de -q, activer le mode non verbeux
    --tty
        alias de -t, forcer l'allocation d'un TTY
    --login USER
        alias de -l, spécifier le user avec lequel se connecter
    --port PORT
        alias de -p, spécifier le port sur lequel se connecter

Les options suivantes sont exclusives à ce script:
    -d, --domain DOMAIN
        Spécifier un domaine par défaut pour les hôtes qui sont spécifiés sans
        domaine.
    -z, --ssh SSH
        Spécifier l'exécutable à utiliser pour lancer ssh.
    -r, --remove
        Lancer 'ssh-keygen -R' pour chacun des hôtes spécifiés avant de s'y
        connecter. Par exemple:
            ussh -r host.tld
        est équivalent à:
            ssh-keygen -R host.tld
            ssh-keygen -R host
            ssh-keygen -R 10.10.1.5
            ssh host.tld
        si l'adresse ip de host.tld est 10.10.1.5
        Quand cette option est spécifié, l'option -j est reconnue et permet de
        NE PAS se reconnecter à l'hôte juste après avoir nettoyé les clés. Avec
        l'option -j, TOUS les arguments sont des noms d'hôte puisqu'aucune
        connexion n'est effectuée.
    --exec
    --no-exec
        Avec --exec, si un seul hôte est spécifié, lancer le processus ssh avec
        exec, pour éviter d'encombrer la mémoire. C'est l'option par défaut.
        Avec --no-exec, ne jamais utiliser exec pour lancer ssh.
    --parse
        Afficher la définition des variables ssh, options, hosts et args qui
        permettent d'effectuer la connexion à partir d'un autre script. Exemple:
            eval "$(ussh --parse args...)"
            for host in "${hosts[@]}"; do
                ${exec:+exec} "$ssh" "${options[@]}" "$host" "${args[@]}"
            done
    --cc
        Assumer que nutools est installé sur l'hôte distant, et y lancer uwatch
        avec l'option --cc, pour permettre de garder la connexion active dans le
        cadre d'une redirection de port.

Si la variable UTOOLS_USSH_RSYNC_SUPPORT contient une valeur non vide, l'analyse
des arguments s'arrête à la première valeur qui n'est pas une option, afin de
permettre l'utilisation de ce script avec l'option -e de rsync.
}}}
