114 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
##@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
 | 
						|
  }
 | 
						|
}'
 | 
						|
}
 |