114 lines
3.3 KiB
Plaintext
114 lines
3.3 KiB
Plaintext
|
##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||
|
## Outils pour les distributions debian
|
||
|
##@cooked nocomments
|
||
|
##@require base
|
||
|
##@require sysinfos
|
||
|
##@require service
|
||
|
uprovide debian
|
||
|
urequire base sysinfos service
|
||
|
|
||
|
################################################################################
|
||
|
# Gestion des packages
|
||
|
|
||
|
function pkg_check() {
|
||
|
# Vérifier que les packages sont installés sur le système
|
||
|
local pkg status
|
||
|
for pkg in "$@"; do
|
||
|
status="$(LANG=C dpkg -s "$pkg" 2>/dev/null | grep '^Status:')" || return 1
|
||
|
[[ "$status" == *not-installed* ]] && return 1
|
||
|
[[ "$status" == *deinstall* ]] && return 1
|
||
|
done
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
function pkg_update() {
|
||
|
# Mettre à jour la liste des packages silencieusement sans confirmation
|
||
|
LANG=C apt-get update -qy
|
||
|
}
|
||
|
|
||
|
function pkg_upgrade() {
|
||
|
# Mettre à jour la liste des packages silencieusement sans confirmation
|
||
|
LANG=C apt-get upgrade -qy
|
||
|
}
|
||
|
|
||
|
function pkg_install() {
|
||
|
# Installer les packages silencieusement et sans confirmation
|
||
|
LANG=C apt-get install -qy "$@"
|
||
|
}
|
||
|
|
||
|
function pkg_installm() {
|
||
|
# Installer les packages silencieusement et sans confirmation
|
||
|
# Retourner 0 si au moins un des packages a été installé. Sinon, les
|
||
|
# packages n'ont pas été installés, soit parce qu'ils sont déjà installé,
|
||
|
# soit parce qu'il y a eu une erreur.
|
||
|
if ! pkg_check "$@"; then
|
||
|
# essayer d'installer les packages
|
||
|
pkg_install "$@"
|
||
|
else
|
||
|
# aucun package n'a été installé
|
||
|
return 1
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
################################################################################
|
||
|
# Gestion des services
|
||
|
|
||
|
function service_disable() {
|
||
|
# Désactiver le service $1 pour qu'il ne se lance pas automatiquement au
|
||
|
# démarrage
|
||
|
update-rc.d -f "$1" remove
|
||
|
}
|
||
|
|
||
|
function service_enable() {
|
||
|
# Activer le service $1 pour qu'il se lance automatiquement au démarrage
|
||
|
update-rc.d "$1" defaults
|
||
|
}
|
||
|
|
||
|
################################################################################
|
||
|
# Gestion des interfaces réseau
|
||
|
|
||
|
function create_bridge() {
|
||
|
# Créer un nouveau pont nommé $1 avec les paramètres $2
|
||
|
# Si $2 est vide, sa valeur par défaut est
|
||
|
# bridge_ports none
|
||
|
# bridge_stp off
|
||
|
# bridge_fd 2
|
||
|
# bridge_maxwait 0
|
||
|
|
||
|
# OPTIONS:
|
||
|
# --static L'interface est statique plutôt que de recevoir son
|
||
|
# adresse par DHCP
|
||
|
# --auto Démarrer l'interface automatiquement
|
||
|
# Une définition existante de l'interface n'est jamais écrasée.
|
||
|
# Retourner vrai si la définition a été ajoutée dans /etc/network/interfaces
|
||
|
local args method auto ifname lines
|
||
|
method=dhcp
|
||
|
parse_opts \
|
||
|
--static method=static \
|
||
|
--auto auto \
|
||
|
@ args -- "$@" && set -- "${args[@]}" || {
|
||
|
eerror "$args"
|
||
|
return 1
|
||
|
}
|
||
|
ifname="${1:-br0}"
|
||
|
array_from_lines lines "$2"
|
||
|
lines="$(array_to_lines lines "" " ")"
|
||
|
doinplacef /etc/network/interfaces awkrun ifname="$ifname" lines="$lines" method="$method" auto="$auto" '
|
||
|
BEGIN {
|
||
|
foundif = 0
|
||
|
}
|
||
|
$0 ~ "^iface " ifname " " { foundif = 1 }
|
||
|
{ print }
|
||
|
END {
|
||
|
if (foundif) {
|
||
|
exit 1
|
||
|
} else {
|
||
|
print ""
|
||
|
if (auto != "") print "auto " ifname
|
||
|
print "iface " ifname " inet " method
|
||
|
if (lines != "") print lines
|
||
|
exit 0
|
||
|
}
|
||
|
}'
|
||
|
}
|