#!/bin/bash # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 source "$(dirname -- "$0")/lib/ulib/auto" || exit 1 function display_help() { uecho "$scriptname: Faire une connexion ssh en lançant automatiquement un screen sur l'hôte distant USAGE $scriptname [user@]host [options] En principe, hormis l'argument user@host, il ne faudrait spécifier que des options. Dans le cas où d'autres arguments seraient spécifiés, les meilleurs efforts sont faits pour lancer ces commandes avant screen." } if [ $# -eq 1 -a "$1" == --help ]; then display_help exit 0 fi vars="$("$scriptdir/ussh" --parse "$@")" || die eval "$vars" [ "${#hosts[*]}" -gt 0 ] || die "Vous devez spécifier l'hôte sur lequel se connecter" [ ${#args[*]} -gt 0 ] && cmd="$(qvals "${args[@]}"); " || cmd= cmd="$cmd export LOCKPRG=/bin/true; $(<"$scriptdir/Sscreen")" cmd="'${cmd//\'/\'\\\'\'}'" for host in "${hosts[@]}"; do "$ssh" \ "${options[@]}" -qt "$host" -- \ "export LOCKPRG=/bin/true; [ -x /usr/local/nutools/Sscreen ] && exec /usr/local/nutools/Sscreen $(qvals "${args[@]}") || exit 123" if [ $? -eq 123 ]; then # pas de Sscreen en face, le faire à la main ${exec:+exec} \ "$ssh" "${options[@]}" -t "$host" -- \ /bin/bash -c "$cmd" fi done