##@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 } }' }