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