From a43359c7605cd5a89b0492ec8ea9b75fb5354c22 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Thu, 2 Mar 2017 01:45:26 +0400 Subject: [PATCH] maj doc --- doc/tools/SVirtualBox.md | 41 +++++++++++++++++++++-------- doc/tools/create-user.md | 29 ++++++++++++++++++++ doc/tools/netconfig.md | 45 +++++++++++++++++++++++++++++++ doc/tools/umountr.md | 19 +++++++++++--- doc/tools/uproject.md | 2 ++ doc/tools/uscrontab.md | 6 +++++ doc/ulib/base.core.md | 7 ++--- doc/ulib/base.num.md | 4 +++ doc/ulib/base.string.md | 57 ++++++++++++++++++++++++++++++++++------ doc/ulib/conf.md | 6 ++--- doc/ulib/debian.md | 57 ---------------------------------------- doc/ulib/ipcalc.md | 57 ++++++++++++++++++++++++++++++++++++++++ doc/ulib/redhat.md | 5 +--- doc/ulib/sysinfos.md | 15 +++++++++++ 14 files changed, 260 insertions(+), 90 deletions(-) create mode 100644 doc/tools/create-user.md create mode 100644 doc/tools/netconfig.md diff --git a/doc/tools/SVirtualBox.md b/doc/tools/SVirtualBox.md index 2d9e652..518c7d9 100644 --- a/doc/tools/SVirtualBox.md +++ b/doc/tools/SVirtualBox.md @@ -7,19 +7,38 @@ USAGE SVirtualBox [options] vmName OPTIONS - -n Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés - -l Lister les machines virtuelles - -s Démarrer la machine virtuelle (par défaut) + -n, --nop + Ne rien faire excepté s'assurer que les modules VirtualBox sont chargés + -l, --list + Lister les machines virtuelles + -s, --start + Démarrer la machine virtuelle. C'est l'action par défaut. Si le nom de la machine virtuelle n'est pas spécifiée, un menu est affiché - -b Démarrer la VM sans interface graphique. Cette option n'est valide - qu'avec -s - -k Arrêter la machine virtuelle (par ACPI) - -p Mettre en veille la machine virtuelle (par ACPI) - -H Arrêter sauvagement la machine virtuelle - -R Redémarrer sauvagement la machine virtuelle - -S Enregistrer l'état de la machine virtuelle - -g Afficher le gestionnaire de machines virtuelle + -x, --gui + -b, --headless + --separate + Ces options ne sont valides qu'avec -s et permettent de spécifier le + type de démarrage: 'gui' permet d'afficher une fenêtre complète dans + laquelle l'accélération graphique est supportée, headless démarre la + machine en tâche de fond, et separate affiche une fenêtre qui attaque la + machine démarrée en tâche de fond. --separate est l'option par défaut. + -k, -t, --stop + Arrêter la machine virtuelle. Les options -p, -H, -R, -S et -r + permettent de spécifier le type d'arrêt de la machine virtuelle + -p, --sleep + Mettre en veille la machine virtuelle (par ACPI) + -H, --poweroff + Arrêter sauvagement la machine virtuelle + -R, --reset + Redémarrer sauvagement la machine virtuelle + -S, --savestate + Enregistrer l'état de la machine virtuelle + -r, --rrestart + Arrêter la machine, restaurer l'état du dernier snapshot puis la + relancer. + -g, --gui + Afficher le gestionnaire de machines virtuelle ~~~ -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary \ No newline at end of file diff --git a/doc/tools/create-user.md b/doc/tools/create-user.md new file mode 100644 index 0000000..4aca1b8 --- /dev/null +++ b/doc/tools/create-user.md @@ -0,0 +1,29 @@ +# create-user + +~~~ +create-user: créer un utilisateur sudoer et lui installer une clé publique ssh + +USAGE + create-user user [-p pubkey] + +OPTIONS + -p, --pkfile PKFILE + Installer la clé publique ssh contenue dans le fichier spécifié. Par + défaut, prendre le fichier ~/.ssh/id_rsa.pub de l'utilisateur courant. + -s, --pkstring PUBKEY + Installer la clé publique ssh spécifiée. Cette option avancée n'est pas + utilisée en temps normal. Elle a la priorité sur l'option --pkfile + -l, --luser + Ne pas donner à l'utilisateur le droit de sudoer. + -h, --host [USER@]HOST + Créer l'utilisateur sur l'hôte distant spécifié. Si l'utilisateur + distant n'est pas root, il doit être sudoer. + -T, --tmproot TMPROOT + Spécifier le répertoire temporaire sur l'hôte distant, comme par exemple + /var/tmp. Cette option est utile pour certains serveurs, qui ont un /tmp + minuscule. + -S, --ssh SSH + Spécifier le programme à utiliser pour la connection par ssh. +~~~ + +-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary \ No newline at end of file diff --git a/doc/tools/netconfig.md b/doc/tools/netconfig.md new file mode 100644 index 0000000..5b01a19 --- /dev/null +++ b/doc/tools/netconfig.md @@ -0,0 +1,45 @@ +# netconfig + +~~~ +netconfig: gérer la configuration du réseau + +USAGE + netconfig -c network.conf + netconfig [iface:]ip[/suffix]... + +OPTIONS + -P, --partial + Activer le mode de configuration partielle. C'est la valeur par défaut. + Dans ce mode, la configuration courante n'est pas modifiée. Seules de + nouvelles adresses ips sont configurées le cas échéant. + -F, --full + Activer le mode de configuration complète. Dans ce mode, le nom d'hôte + ainsi que toutes les interfaces, pont et adresses sont configurés. + -z, --reset + En mode full, recréer le fichier /etc/network/interfaces au lieu + d'essayer de le mettre à jour. + -l, --inline + Prendre la configuration depuis la ligne de commande. C'est la valeur + par défaut, sauf si un fichier network.conf existe dans le répertoire + courant. + Dans ce mode, chaque argument est une spécification d'adresse IP à + configurer. Les autres paramètres i.e les ponts, le nom d'hôte et le + contenu du fichier /etc/networks sont spécifiés avec les options -b, + -h et -e + -c, --config CONFIG + Spécifier le fichier de configuration à utiliser pour la configuration + du réseau. Cette option est automatiquement activée si le répertoire + courant contient un fichier network.conf + -w, --write + Ecrire la configuration actuelle dans le fichier network.conf + Note: comme ce script demande les droits de root, le fichier sera écrit + avec le propriétaire root. + -b, --bridge BR:IFACES + En mode inline, spécifier une liste de ponts à configurer. + -h, --host HOST + En mode inline, spécifier le nom d'hôte pleinement qualifié + -e, --etc-networks CONTENT + Spécifier un contenu pour remplacer le fichier /etc/networks +~~~ + +-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary \ No newline at end of file diff --git a/doc/tools/umountr.md b/doc/tools/umountr.md index 4caac66..a8c6ff3 100644 --- a/doc/tools/umountr.md +++ b/doc/tools/umountr.md @@ -6,13 +6,24 @@ umountr: démonter un système de fichier récursivement USAGE umountr mountpoint -Démonter tous les systèmes de fichiers qui sont montés en-dessous de mountpoint -puis démonter mountpoint. Démonter aussi tous les systèmes de fichiers -bind-montés à partir d'un sous-répertoire de mountpoint. - OPTION -c, --continuous Continuer même en cas d'erreur + -r, --recursive + -1, --no-recursive + Spécifier le type de démontage: + Avec -1, un démontage simple est effectué, comme avec umount. Ce type de + démontage est automatiquement sélectionné pour les systèmes de fichier + montés sous le répertoire /media + Avec -r, le démontage est récursif: tous les systèmes de fichiers qui + sont montés en-dessous de mountpoint sont démontés puis mountpoint est + démonté. Tous les systèmes de fichiers bind-montés à partir d'un sous- + répertoire de mountpoint sont démontés aussi. + -o, --poweroff + -k, --no-poweroff + Après avoir démonté le système de fichier mountpoint, éteindre le + périphérique qui y correspond. --poweroff est automatiquement activé + pour les systèmes de fichier montés sous le répertoire /media ~~~ -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary \ No newline at end of file diff --git a/doc/tools/uproject.md b/doc/tools/uproject.md index 93b3e16..473cc7b 100644 --- a/doc/tools/uproject.md +++ b/doc/tools/uproject.md @@ -56,11 +56,13 @@ COMMANDS -R Afficher les modifications effectuées depuis la dernière release. clone git@host:path/to/repo [destdir] + clone http://host/gituser/path/to/repo [destdir] Cloner un dépôt distant. Basculer sur la branche develop si elle existe. Initialiser git annex si le dépôt contient des fichiers annexés. Récupérer aussi ces fichiers avec 'git annex get' crone git@host:path/to/repo [destdir] + crone http://host/gituser/path/to/repo [destdir] Créer un dépôt distant sur gitolite, puis le cloner develop diff --git a/doc/tools/uscrontab.md b/doc/tools/uscrontab.md index c5a579b..a9da104 100644 --- a/doc/tools/uscrontab.md +++ b/doc/tools/uscrontab.md @@ -283,6 +283,12 @@ OPTIONS AVANCEES référence. Il faut respecter le format, sinon les résultats ne sont pas garantis. Le mieux est de reprendre le résultat de l'option --show-ctnow en le modifiant un peu si nécessaire. + -G, --any-ctnow + Pour le développement ou des tests, lancer toutes les commandes dans + l'ordre sans tenir compte de l'heure de référence. Cette commande ne + devrait pas être utilisée en temps normal, mais elle existe pour + simplifier les tests avec --show-ctnow + --force-ctnow dans les cas + simples. ~~~ -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary \ No newline at end of file diff --git a/doc/ulib/base.core.md b/doc/ulib/base.core.md index 2112d67..4403576 100644 --- a/doc/ulib/base.core.md +++ b/doc/ulib/base.core.md @@ -77,8 +77,9 @@ syntaxe 'setx -a array=cmd args...' est supportée aussi ~~~ Implémenter une syntaxe lisible et naturelle permettant d'enchainer des traitements sur une valeur. Par exemple, la commande -evalx cmd1... // cmd2... // cmd3... -affiche le résultat de la commande "$(cmd3 $(cmd2 $(cmd1)))" +evalx cmd1 [args1...] // cmd2 [args2...] // cmd3 [args3...] +est équivalente à la commande +cmd3 args3 "$(cmd2 args2 "$(cmd1 args1)")" Retourner le dernier code d'erreur non nul, ou 0 si toutes les commandes se sont exécutées sans erreur. ~~~ @@ -92,7 +93,7 @@ Implémenter une syntaxe alternative permettant d'enchainer des traitements sur un flux de données. Par exemple, la commande evalp cmd1... // cmd2... // cmd3... affiche le résultat de la commande "$(cmd1 | cmd2 | cmd3)" -Typiquement, cette fonction permet de faciliter la construction d'un +Typiquement, cette fonction permet de faciliter la *construction* d'un enchainement de commandes par programme, ou de faciliter l'utilisation de la fonction setx() pour récupérer le résultat d'un enchainement. Dans les autres cas, il est plus simple et naturel d'écrire les enchainements avec la syntaxe diff --git a/doc/ulib/base.num.md b/doc/ulib/base.num.md index cfbd9e0..72e7f5f 100644 --- a/doc/ulib/base.num.md +++ b/doc/ulib/base.num.md @@ -13,5 +13,9 @@ retourner vrai si $1 est une valeur numérique entière positive retourner vrai si $1 est une valeur numérique réelle (positive ou négative) le séparateur décimal peut être . ou , ~~~ +## `evali` +~~~ +Evaluer une expression numérique +~~~ -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary \ No newline at end of file diff --git a/doc/ulib/base.string.md b/doc/ulib/base.string.md index b074c99..04f9f5a 100644 --- a/doc/ulib/base.string.md +++ b/doc/ulib/base.string.md @@ -2,27 +2,27 @@ ## `straddp` ~~~ -ajouter le préfixe $1 à $2* +ajouter le préfixe $1 à $2..* ~~~ ## `strdelp` ~~~ -enlever le préfixe $1 à $2* +enlever le préfixe $1 à $2..* ~~~ ## `strdelp2` ~~~ -enlever le préfixe $1 le plus long à $2* +enlever le préfixe $1 le plus long à $2..* ~~~ ## `stradds` ~~~ -ajouter le suffixe $1 à $2* +ajouter le suffixe $1 à $2..* ~~~ ## `strdels` ~~~ -enlever le suffixe $1 à $2* +enlever le suffixe $1 à $2..* ~~~ ## `strdels2` ~~~ -enlever le suffixe le plus long $1 à $2* +enlever le suffixe le plus long $1 à $2..* ~~~ ## `strlower` ~~~ @@ -52,14 +52,14 @@ majuscule ~~~ ## `strmid` ~~~ -Afficher la plage $1 de la valeur $2*. La plage peut être d'une des formes +Afficher la plage $1 de la valeur $2..*. La plage peut être d'une des formes 'start', '[start]:length'. Si start est négatif, le compte est effectué à partir de la fin de la chaine. Si length est négatif, il est rajouté à la longueur de la chaine à partir de start ~~~ ## `strrepl` ~~~ -Remplacer dans la valeur $3* le motif $1 par la chaine $2. $1 peut commencer +Remplacer dans la valeur $3..* le motif $1 par la chaine $2. $1 peut commencer par l'un des caractères /, #, % pour indiquer le type de recherche ~~~ ## `strops` @@ -122,5 +122,46 @@ Tester si la chaine $1 commence par le wildcard $2 ~~~ Tester si la chaine $1 se termine par le wildcard $2 ~~~ +## `strsplitf` +~~~ +Cette fonction doit être appelée avec N arguments (avec N>1). Elle analyse et +découpe l'argument $N comme avec une ligne de commande du shell. Ensuite, elle +appelle la fonction $1 avec les arguments de $2 à ${N-1}, suivi des arguments +obtenus lors de l'analyse de l'argument $N. Par exemple, la commande suivante: +strsplitf cmd arg1 "long arg2" "arg3 'long arg4'" +est équivalente à: +cmd arg1 "long arg2" arg3 "long arg4" +Retourner le code 127 si la fonction à appeler n'est pas spécifiée. Retourner +le code 126 si une erreur s'est produite lors de l'analyse de l'argument $N +~~~ +## `strecho` +## `strqvals` +~~~ +Afficher chaque argument à part avec des quotes. A chainer avec strsplitf() +~~~ +## `strqlines` +~~~ +Afficher chaque ligne des fichiers spécifiés comme un argument. A chainer avec +strsplitf() +~~~ +## `strqarray` +~~~ +Afficher chaque valeur des tableaux $@ comme un argument. A chainer avec +strsplitf() +~~~ +## `evals` +~~~ +Enchainer des traitements sur des chaines de caractères, comme pour la fonction +evalx(). Il y a cependant quelques différences: +- Seules certains fonctions spécifiques peuvent être utilisées: elles sont +reconnaissables à leur préfixe 'str'. En effet, lors de l'utilisation d'une +commande par evals(), le préfixe 'str' est systématiquement ajouté. +- La fonction strsplitf() est traitée de façon particulière pour lancer une +commande avec le préfixe 'str' +Ainsi, la commande suivante: +evals cmd1 // splitf cmd2 +est équivalente à la commande: +strplitf strcmd2 "$(strcmd1)" +~~~ -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary \ No newline at end of file diff --git a/doc/ulib/conf.md b/doc/ulib/conf.md index 3179749..d62155b 100644 --- a/doc/ulib/conf.md +++ b/doc/ulib/conf.md @@ -13,9 +13,9 @@ Retourner 0 si une modification a été faite dans le fichier, 1 sinon ~~~ ## `conf_enableq` ~~~ -Comme conf_enable(), mais s'assure que les valeurs sont quotées dans le -fichier. Ceci permet de stocker des valeurs avec des espaces ou des -caractères spéciaux. +Comme conf_enable(), mais s'assure que les valeurs sont quotées si +nécessaire dans le fichier. Ceci permet de stocker des valeurs avec des +espaces ou des caractères spéciaux. ~~~ ## `conf_disable` ~~~ diff --git a/doc/ulib/debian.md b/doc/ulib/debian.md index 3d3b2be..c15221f 100644 --- a/doc/ulib/debian.md +++ b/doc/ulib/debian.md @@ -38,60 +38,6 @@ démarrage ~~~ Activer le service $1 pour qu'il se lance automatiquement au démarrage ~~~ -## `network_parse_confbr` -~~~ -network_parse_confbr "$confbr" br ifaces -~~~ -## `network_format_confbr` -~~~ -network_format_confbr "$br" ifaces --> "br:ifaces" -~~~ -## `network_parse_confip` -~~~ -network_parse_confip "$confip" iface gateway ipsuffixes -~~~ -## `network_parse_ipsuffix` -~~~ -network_parse_ipsuffix "$ipsuffix" ip suffix -~~~ -## `network_format_confip` -~~~ -network_format_confip "$iface" "$gateway" ipsuffixes --> "iface//gateway:ipsuffixes" -~~~ -## `network_format_ipsuffix` -~~~ -network_format_ipsuffix "$ip" "$suffix" --> "ip/suffix" -~~~ -## `network_fix_confbrs` -~~~ -normaliser le tableau $1(=confbrs): fusionner les doublons -~~~ -## `network_fix_confips` -~~~ -normaliser le tableau $1(=confips): fusionner les doublons, spécifier le -suffixe /24 par défaut, etc. $2 est le cas échéant l'interface associée -aux adresses ip non qualifiées -~~~ -## `network_fix_mainiface` -~~~ -A partir des valeurs des tableaux $1(=confbrs) et $2(=confips), et de -l'interface principale $3, déterminer l'interface principale. Si $3 est -spécifié, c'est la valeur sélectionnée. Sinon, si un bridge existe, c'est -le premier bridge qui est sélectionné. Sinon, la première interface est -sélectionnée. Sinon, on prend eth0. -Ensuite, réorganiser les tableaux de façon que confips[0] devienne la -configuration ip de l'interface principale. -~~~ -## `network_fix_confs` -## `network_set_confbrs` -~~~ -initialiser $1(=confbrs) avec l'état des bridges sur le système courant -~~~ -## `network_set_confips` -~~~ -initialiser le tableau $1(=confips) avec l'état des interfaces sur le -système courant -~~~ ## `network_interfaces_check_confbr` ~~~ Vérifier que la configuration du bridge $1, dont les membres sont les @@ -135,9 +81,6 @@ $3(=confips) ~~~ ## `network_fix_hostname` ## `network_fix_mailname` -## `network_fix_exim4` -## `network_fix_postfix` -## `network_fix_hosts` ## `network_config` ~~~ (Re)configurer le réseau sur l'hôte courant. Des efforts sont faits pour diff --git a/doc/ulib/ipcalc.md b/doc/ulib/ipcalc.md index b94fd7e..f5f86d5 100644 --- a/doc/ulib/ipcalc.md +++ b/doc/ulib/ipcalc.md @@ -73,5 +73,62 @@ Si $1 *semble* déjà être un nom d'hôte pleinement qualifié, l'afficher tel quel. Sinon utiliser ipcalc_fqdn() pour afficher le nom d'hôte pleinement qualifié correspondant. ~~~ +## `network_parse_confbr` +~~~ +network_parse_confbr "$confbr" br ifaces +~~~ +## `network_format_confbr` +~~~ +network_format_confbr "$br" ifaces --> "br:ifaces" +~~~ +## `network_parse_confip` +~~~ +network_parse_confip "$confip" iface gateway ipsuffixes +~~~ +## `network_parse_ipsuffix` +~~~ +network_parse_ipsuffix "$ipsuffix" ip suffix +~~~ +## `network_format_confip` +~~~ +network_format_confip "$iface" "$gateway" ipsuffixes --> "iface//gateway:ipsuffixes" +~~~ +## `network_format_ipsuffix` +~~~ +network_format_ipsuffix "$ip" "$suffix" --> "ip/suffix" +~~~ +## `network_fix_confbrs` +~~~ +normaliser le tableau $1(=confbrs): fusionner les doublons +~~~ +## `network_fix_confips` +~~~ +normaliser le tableau $1(=confips): fusionner les doublons, spécifier le +suffixe /24 par défaut, etc. $2 est le cas échéant l'interface associée +aux adresses ip non qualifiées +~~~ +## `network_fix_mainiface` +~~~ +A partir des valeurs des tableaux $1(=confbrs) et $2(=confips), et de +l'interface principale $3, déterminer l'interface principale. Si $3 est +spécifié, c'est la valeur sélectionnée. Sinon, si un bridge existe, c'est +le premier bridge qui est sélectionné. Sinon, la première interface est +sélectionnée. Sinon, on prend eth0. +Ensuite, réorganiser les tableaux de façon que confips[0] devienne la +configuration ip de l'interface principale. +~~~ +## `network_fix_confs` +## `network_set_confbrs` +~~~ +initialiser $1(=confbrs) avec l'état des bridges sur le système courant +~~~ +## `network_set_confips` +~~~ +initialiser le tableau $1(=confips) avec l'état des interfaces sur le +système courant +~~~ +## `network_fix_exim4` +## `network_fix_postfix` +## `network_fix_hosts` -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary \ No newline at end of file diff --git a/doc/ulib/redhat.md b/doc/ulib/redhat.md index e04e426..66f2059 100644 --- a/doc/ulib/redhat.md +++ b/doc/ulib/redhat.md @@ -32,9 +32,6 @@ démarrage ~~~ Activer le service $1 pour qu'il se lance automatiquement au démarrage ~~~ -## `create_bridge` -~~~ -Créer un nouveau pont nommé $1 avec les paramètres $2 -~~~ +## `network_fix_hostname` -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary \ No newline at end of file diff --git a/doc/ulib/sysinfos.md b/doc/ulib/sysinfos.md index d0bfa1b..3888611 100644 --- a/doc/ulib/sysinfos.md +++ b/doc/ulib/sysinfos.md @@ -11,6 +11,11 @@ et $3(=SYSVER) en fonction des valeurs des autres. Cette fonction est à utiliser quand on récupère cette information de la part de l'utilisateur, et qu'il faut compléter ~~~ +## `dump_sysinfos` +~~~ +Afficher les valeurs de SYSNAME, SYSDIST, SYSVER qui décrivent le système +actuel +~~~ ## `get_sysinfos_desc` ~~~ Afficher une chaine de la forme SYSNAME/SYSDIST/SYSVER qui décrit le @@ -46,6 +51,16 @@ cela n'a actuellement de sens qu'avec les version de MacOS X. Il faut aussi impérativement filtrer sur le système, e.g: check_sysinfos -s macosx -d 10.5+ ~~~ +## `unsupported_system` +~~~ +Afficher un message d'erreur indiquant que le système actuel n'est pas +supporté, et quitter le script +~~~ +## `require_sysinfos` +~~~ +Vérifier le système actuel avec check_sysinfos(), et afficher un message +d'erreur avec unsupported_system() s'il ne correspond pas à la requête +~~~ ## `on_debian` ~~~ Tester si on est sur debian. charger le module debian si c'est le cas.