source: tt-tools/bin/maj-tt-tools.sh @ 12

Last change on this file since 12 was 8, checked in by root, 17 years ago

Fixe bug installation dropbear, merci à CubaCola? pour le débrouisaillage

  • Property svn:executable set to *
File size: 2.7 KB
Line 
1#! /usr/share/bin/busybox ash
2
3die () {
4        echo "Erreur: $*" >&2
5        exit 1
6}
7
8# Initialisation de commandes utilisées dans ce script
9BB='/usr/share/bin/busybox'
10LS="$BB ls"
11CUT="$BB cut"
12SED="$BB sed"
13STRIP="$SED -r -e 's/^[\\t ]+//' -e 's/[\[ ]+/ /g'"
14TR="$BB tr"
15GREP="$BB grep"
16RM="$BB rm -f"
17MV="$BB mv -f"
18CHMOD="$BB chmod"
19DROPBEARKEY="/usr/share/bin/dropbearkey -t dss -f"
20
21cd /usr/share/bin || die "Binaires tt-tools non disponible"
22[ -x busybox ] || die "Binaire busybox non disponible"
23[ -x dropbearmulti ] || die "Binaire dropbear non disponible"
24
25# A. Création des liens vers busybox
26echo "Mise à jour des liens pour Busybox"
27
28# Le cas des lien pour '[' & '[[' ne passe pas dans la moulinette automatique
29ln -sf busybox [
30ln -sf busybox [[
31
32# On récupère l'i-node de busybox pour simplifier le filtrage
33bbi="$($LS -i busybox | eval $STRIP | $CUT -d ' ' -f1)"
34bbloGREP="$GREP -E \"^[ ]+$bbi \""
35
36# On récupère la liste des liens existants en gardant des espaces aux extrémités
37# de la chaine pour faciliter la suppression des liens utiles en exploitant
38# les propriétés d'extractions de 'chemin' dans les variables
39bblo="$($LS -iLw0 | eval $bbloGREP | $GREP -v busybox | eval $STRIP | $CUT -d ' ' -f2)"
40bblo=" $(echo -n $bblo) "
41
42# On récupère la liste des liens à avoir
43bbll="$($BB | $GREP ',' | $GREP -v Copyright | $TR ',' ' ' | eval $STRIP)"
44
45let lmax=40 lf=lmax
46for lien in $bbll
47do
48        l=$lien
49        [ "$l" == '[' ] && l='\[' || [ "$l" == '[[' ] && l='\[\['
50        loA="${bblo% $l *}"
51        if [ "$bblo" != "$loA" ]; then
52                echo -n .
53                # Le lien existe, on le supprime de la liste locale
54                bblo="$loA ${bblo#* $l }"
55        else
56                echo -n '*'
57                # On crée le lien nécessaire
58                ln -sf busybox $lien
59        fi
60        let lf=--lf?lf:lmax ; [ "$lf" -eq "$lmax" ] && echo
61done
62echo
63
64# Enfin, on supprime les liens qui ne sont plus à utiliser s'il en existe
65if [ -n "$(echo -n $bblo)" ]; then
66        echo "Supression des liens inutiles: $(echo $bblo)"
67        $RM -f $bblo
68fi
69
70echo "Installation de busybox terminée"
71echo
72
73# B. On installe dropbear si nécessaire
74# B.1. On installe les liens
75for lien in dropbear dbclient dropbearkey scp
76do
77        ln -sf dropbearmulti $lien
78done
79
80# B.2. On contrôle s'il faut installer la configuration par défaut
81cd /usr/share/config/dropbear || die "Configuration de dropbear non disponible"
82for conf in authorized_keys motd shell
83do
84        # On supprime si la conf est déjà installée, sinon on l'installe
85        [ -e "$conf" ] && $RM "$conf.majtmp" || $MV "$conf.majtmp" "$conf"
86done
87
88# B.3. On crée une clé privée si elle n'existe pas
89[ -e dropbear_dss_host_key ] || $DROPBEARKEY dropbear_dss_host_key
90
91# B.4. On mets à jour les droits
92$CHMOD 600 authorized_keys dropbear_dss_host_key
93$CHMOD 755 shell
94
95echo "Installation de dropbear terminée"
96echo
Note: See TracBrowser for help on using the repository browser.