support de --uses-su pour ruinst -C

This commit is contained in:
Jephté Clain 2015-08-19 10:23:07 +04:00
parent 6215aa7ddd
commit 6ba41b953c
2 changed files with 6742 additions and 4 deletions

File diff suppressed because it is too large Load Diff

13
ruinst
View File

@ -23,6 +23,9 @@ OPTIONS
il est possible de faire la configuration avec '--configure root'. La il est possible de faire la configuration avec '--configure root'. La
commande serait alors commande serait alors
$scriptname -h user@host --configure root $scriptname -h user@host --configure root
Si l'hôte distant n'a pas sudo ou si sudo n'est pas configuré, il faut
rajouter l'option --uses-su, e.g:
$scriptname -h user@host --configure root --uses-su
-T tmproot -T tmproot
Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple
/var/tmp. Cette option est utile pour les vservers, qui ont par défaut /var/tmp. Cette option est utile pour les vservers, qui ont par défaut
@ -49,6 +52,7 @@ set_defaults pubkeys
action=deploy action=deploy
confuser= confuser=
uses_su=
tmproot= tmproot=
hosts=() hosts=()
SSH= SSH=
@ -57,6 +61,7 @@ parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-C action=configure \ -C action=configure \
--configure: '$set@ confuser;action=configure' \ --configure: '$set@ confuser;action=configure' \
--uses-su uses_su=1 \
-T:,--tmproot: tmproot= \ -T:,--tmproot: tmproot= \
-S: SSH= \ -S: SSH= \
--force-make-archive force_make_archive=1 \ --force-make-archive force_make_archive=1 \
@ -135,11 +140,11 @@ function prepare_pubkey_access() {
# générer un script d'installation de clé avec la bonne clé # générer un script d'installation de clé avec la bonne clé
ac_set_tmpfile IPKS ac_set_tmpfile IPKS
awkrun PUBKEYS="$PUBKEYS" '{sub(/@@PUBKEYS@@/, PUBKEYS); } {print}' \ awkrun PUBKEYS="$PUBKEYS" '{sub(/@@PUBKEYS@@/, PUBKEYS); } {print}' \
<"$scriptdir/ulib/support/install-pubkeys.sh" >"$IPKS" <"$ULIBDIR/support/install-pubkeys.sh" >"$IPKS"
chmod +x "$IPKS" chmod +x "$IPKS"
} }
function check_pubkey_access() { function check_pubkey_access() {
local user= host="$1" confuser="$2" ipks="$3" local user= host="$1" confuser="$2" ipks="$3" uses_su="$4"
if [[ "$host" == *@* ]]; then if [[ "$host" == *@* ]]; then
user="${host%%@*}" user="${host%%@*}"
host="${host#*@}" host="${host#*@}"
@ -154,7 +159,7 @@ function check_pubkey_access() {
if [ "$user" != "$confuser" ]; then if [ "$user" != "$confuser" ]; then
enote "Vous pouvez être amené à entrer plusieurs fois le mot de passe de $user sur $host" enote "Vous pouvez être amené à entrer plusieurs fois le mot de passe de $user sur $host"
scp -S "$SSH" -o StrictHostKeyChecking=no -o ConnectTimeout=2 -q "$ipks" "$user@$host:" && scp -S "$SSH" -o StrictHostKeyChecking=no -o ConnectTimeout=2 -q "$ipks" "$user@$host:" &&
"$SSH" -o ConnectTimeout=2 -qt "$user@$host" "./$(basename "$ipks") '$confuser'" || "$SSH" -o ConnectTimeout=2 -qt "$user@$host" "./$(basename "$ipks") '$confuser' ${uses_su:+su}" ||
eerror "Impossible de copier la clé publique sur l'hôte distant" eerror "Impossible de copier la clé publique sur l'hôte distant"
else else
"$SSH" -o StrictHostKeyChecking=no -o ConnectTimeout=2 -q "$user@$host" "PUBKEYS=$(quoted_sarg "$PUBKEYS")"' "$SSH" -o StrictHostKeyChecking=no -o ConnectTimeout=2 -q "$user@$host" "PUBKEYS=$(quoted_sarg "$PUBKEYS")"'
@ -187,7 +192,7 @@ if [ "$action" == "configure" ]; then
etitle -s "Configuration de l'accès par clé ssh" etitle -s "Configuration de l'accès par clé ssh"
for host in "${hosts[@]}"; do for host in "${hosts[@]}"; do
etitle "$host" check_pubkey_access "$host" "$confuser" "$IPKS" etitle "$host" check_pubkey_access "$host" "$confuser" "$IPKS" "$uses_su"
done done
eend eend
exit 0 exit 0