Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
elearning:solaris10script:start [2020/01/30 03:29] – modification externe 127.0.0.1elearning:solaris10script:start [2020/03/15 10:00] (Version actuelle) admin
Ligne 1: Ligne 1:
-=====Oracle Solaris 10 : Shell programmation sous Ksh=====+~~PDF:PORTRAIT~~ 
 + 
 +Version : **2020.01** 
 + 
 +Dernière mise-à-jour : ~~LASTMOD~~ 
 + 
 +=====UNI200 - Oracle Solaris 10 : Shell programmation sous Ksh=====
  
 =====Présentation===== =====Présentation=====
Ligne 12: Ligne 18:
 \\ \\
 **Méthode d'apprentissage** : Alternance entre un scénario pédagogique clair et précis et des travaux pratiques basés sur des cas et exemples concrets. **Méthode d'apprentissage** : Alternance entre un scénario pédagogique clair et précis et des travaux pratiques basés sur des cas et exemples concrets.
-\\ 
-**Type d'apprentissage** : **Apprentissage Accéléré**. 
 \\ \\
 **Validation des acquis** : Évaluations à l'aide de tests auto-correctifs. **Validation des acquis** : Évaluations à l'aide de tests auto-correctifs.
 \\ \\
-**Modalités** : 21 heures+**Durée** : 3 jours (21h)
-\\ + 
-**Moyens pédagogiques en salle** : Support de cours en ligne téléchargeable au format PDF +=====Support de Cours===== 
-\\ + 
-**Ressources*: Machine virtuelle Oracle Solaris 10.+L'accès au supports de cours ainsi que les LABS et les validations des acquis se fait grâce à un abonnement annuel par stagiaire à une plateforme de cours sur Internet. Cette abonnement est facturé 35 € HT par stagiaire et par session.  
 + 
 +L'utilisation de cette plateforme permet : 
 + 
 +  de mesurer le niveau du stagiaire avant la formation et celui atteint en fin de formation grâce aux tests de validations des acquis, 
 +  de suivre du travail de chaque participant en termes de temps passé dans chaque module grâce à un reporting détaillé. 
 + 
 +L'abonnement permet aux stagiaires : 
 + 
 +  * de télécharger des supports de cours et des LABS au format PDF le dernier jour de la formation, 
 +  * de refaire les LABS en mode autonome en cas de missions décalées en relation avec le contenu de la formation initiale, 
 +  de rester en contact avec le formateur en cas de problèmes en production liés au contenu du cours, 
 +  de consulter les mises à jour du contenu des supports de cours pendant la période de l'abonnement, 
 +  d'échanger avec les autres participants de votre session ainsi qu'avec les anciens stagiaires. 
 + 
 +=====Prérequis===== 
 + 
 +==== Matériel====
  
-====Programme====+  * Un poste 64 bits (MacOS, Linux, Windows(tm) ou Solaris(tm)), 
 +  * Dans le cas de Windows(tm), **seulement** la version 7 ou 10 avec Hyper-V **désinstallé**, 
 +  * Le mot de passe du compte administrateur du système, 
 +  * Clavier AZERTY FR ou QWERTY US, 
 +  * 16 Go de RAM minimum, 
 +  * Processeur 4 cœurs minimum, 
 +  * 16 Go d'espace disque disponible, 
 +  * Un casque ou des écouteurs (si **[[https://fr.wikipedia.org/wiki/Massive_Open_Online_Course|MOOC]]** ou **[[https://fr.wikipedia.org/wiki/Formation_%C3%A0_distance|FAD]]**), 
 +  * Un micro (optionnel). 
 + 
 +====Logiciels==== 
 + 
 +  * Oracle VirtualBox v 6.0 ou plus (MacOS, Linux, Windows(tm) ou Solaris(tm)), 
 +  * Si Windows(tm) - Putty et WinSCP. 
 + 
 +====Machine Virtuelle==== 
 + 
 +A télécharger **avant** la formation : **[[https://my-short.link/VfonWG|Solaris10-11]]**. 
 + 
 +====Internet==== 
 + 
 +  * Un accès à Internet rapide **sans** passer par un proxy, 
 +  * Formations en Face-à-Face Pédagogique 
 +    * Accès **débloqué** au domaine suivant : 
 +      * https://ittraining.io 
 +  * Formations à Distance 
 +    * Accès **débloqué** aux domaines suivants : 
 +      * https://ittraining.io 
 +      * https://ittraining.institute 
 +      * http://ittraining.support 
 + 
 +=====Programme===== 
 + 
 +====Jour #1====
  
   * **La Ligne de Commande et les Outils de Manipulation des Fichiers Textes**.   * **La Ligne de Commande et les Outils de Manipulation des Fichiers Textes**.
Ligne 75: Ligne 129:
     * Validation des acquis,     * Validation des acquis,
     * **Commandes** : type, alias, unalias, chsh, history, wc, tee, set, vi, script, read, test, expr, let, if, case, for, while, grep, egrep, fgrep, sed, awk, tr, paste, cut, split, diff, cmp, uniq, patch, strings, comm, od, head, tail.     * **Commandes** : type, alias, unalias, chsh, history, wc, tee, set, vi, script, read, test, expr, let, if, case, for, while, grep, egrep, fgrep, sed, awk, tr, paste, cut, split, diff, cmp, uniq, patch, strings, comm, od, head, tail.
 +
 +====Jour #2====
  
   * **LAB #1**.   * **LAB #1**.
Ligne 87: Ligne 143:
       * Fonction **affiche_group**,       * Fonction **affiche_group**,
       * Menu des choix.       * Menu des choix.
 +
 +====Jour #3====
  
   * **LAB #2**.   * **LAB #2**.
Ligne 97: Ligne 155:
       * Gestion des erreurs.       * Gestion des erreurs.
  
-=====Extrait de Cours===== +----
- +
-====Solaris 10 - La Ligne de Commande==== +
- +
-===Le Shell=== +
- +
-Un shell est un **interpréteur de commandes** ou en anglais un** Command Line Interpreter (C.L.I)**. Il est utilisé comme interface pour donner des instructions ou **commandes** au système d'exploitation.  +
- +
-Le mot shell est générique. Il existe de nombreux shells dans le monde Unix, par exemple : +
- +
-^ Shell ^ Nom ^ Date de Sortie ^ Inventeur ^ Commande ^ Commentaires ^ +
-| tsh | Thompson Shell | 1971 | Ken Thompson | sh | Le premier shell | +
-| sh | Bourne Shell | 1977 | Stephen Bourne | sh | Le shell commun à tous les Unix. Sous Solaris : /usr/bin/sh | +
-| csh | C-Shell | 1978 | Bill Joy | csh | Le shell BSD. Sous Solaris : /usr/bin/csh | +
-| tcsh | Tenex C-Shell | 1979 | Ken Greer | tcsh | Un dérivé du shell csh. Sous Solaris : /usr/bin/tcsh | +
-| ksh | Korn Shell | 1980 | David Korn | ksh | Uniquement libre depuis 2005. Sous Solaris : /usr/bin/ksh | +
-| bash | Bourne Again Shell | 1987 | Brian Fox | bash | Le shell par défaut de Linux et de MacOS X. Sous Solaris : /usr/bin/bash | +
-| zsh | Z Shell | 1990 | Paul Falstad | zsh | Zsh est plutôt orienté pour l'interactivité avec l'utilisateur. | +
- +
-Cette unité concerne l'utilisation du shell **ksh** sous Unix. Cependant, il peut aussi être utile aux utilisateurs de **bash** sous UNIX car les commandes sont pratiquement identiques. +
- +
-Le shell **/bin/ksh** permet de: +
- +
-  * Rappeler des commandes +
-  * Générer la fin de noms de fichiers +
-  * Utiliser des alias +
-  * Utiliser les variables tableaux +
-  * Utiliser les variables numériques et l'arithmétique du langage C +
-  * Gérer des chaines de caractères +
-  * Utiliser les fonctions +
- +
-Une commande commence toujours par un mot clef. Ce mot clef est interpréter par le shell selon le type de commande et dans l'ordre qui suit : +
- +
-  - Les alias +
-  - Les fonctions +
-  - Les commandes internes au shell +
-  - Les commandes externes au shell +
- +
-Le shell par défaut de root sous Solaris est **/bin/sh**. +
- +
-Le shell des utilisateurs est défini par **root** dans le fichier **/etc/passwd** : +
- +
-<code> +
-# cat /etc/passwd +
-root:x:0:0:Super-User:/:/sbin/sh +
-daemon:x:1:1::/: +
-bin:x:2:2::/usr/bin: +
-sys:x:3:3::/: +
-adm:x:4:4:Admin:/var/adm: +
-lp:x:71:8:Line Printer Admin:/usr/spool/lp: +
-uucp:x:5:5:uucp Admin:/usr/lib/uucp: +
-nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico +
-smmsp:x:25:25:SendMail Message Submission Program:/: +
-listen:x:37:4:Network Admin:/usr/net/nls: +
-gdm:x:50:50:GDM Reserved UID:/: +
-webservd:x:80:80:WebServer Reserved UID:/: +
-postgres:x:90:90:PostgreSQL Reserved UID:/:/usr/bin/pfksh +
-svctag:x:95:12:Service Tag UID:/: +
-nobody:x:60001:60001:NFS Anonymous Access User:/: +
-noaccess:x:60002:60002:No Access User:/: +
-nobody4:x:65534:65534:SunOS 4.x NFS Anonymous Access User:/: +
-test:x:100:1:Test:/export/home/test:/bin/ksh +
-</code> +
- +
-<WRAP center round important> +
-Ne modifiez **jamais** le shell de root dans le fichier **/etc/passwd**. +
-</WRAP> +
- +
-Devenez maintenant l'utilisateur test grâce à la commande **su -** : +
- +
-<code> +
-# su - test +
-Sun Microsystems Inc.   SunOS 5.10      Generic January 2005 +
-+
-</code> +
- +
-Vérifiez que le shell de l'utilisateur **test** soit bien **ksh** grâce à la consultation de la valeur de la variable système **SHELL** : +
- +
-<code> +
-$ echo $SHELL +
-/bin/ksh +
-</code> +
- +
-Il convient maintenant de modifier le shell de **test** en **bash** : +
- +
-<code> +
-$ which bash +
-/usr/bin/bash +
-</code> +
- +
-passez en tant que **root** grâce à la commande **exit** puis éditez le fichier **/etc/passwd** : +
- +
-<code> +
-test:x:101:1:Test:/export/home/test:/usr/bin/bash +
-</code> +
- +
-Ensuite connectez-vous de nouveau en tant que l'utilisateur test et utilisez la commande **echo** pour visualiser le contenu de la variable système **SHELL** : +
- +
-<code> +
-# su - test +
-Sun Microsystems Inc.   SunOS 5.10      Generic January 2005 +
--bash-3.00$ echo $SHELL +
-/usr/bin/bash +
-</code> +
- +
-<WRAP center round important> +
-Définissez de nouveau le CLI de l'utilisateur **test** en **/bin/ksh** avant de poursuivre.  +
-</WRAP> +
- +
-Une commande tapée dans un CLI commence toujours par un mot clef. Ce mot clef est interprétée par le shell selon le type de commande et dans l'ordre qui suit : +
- +
-  - Les alias +
-  - Les fonctions +
-  - Les commandes internes au shell +
-  - Les commandes externes au shell +
- +
- +
-La suite de ce cours concerne l'utilisation du shell **ksh** sous Solaris. Le shell **ksh** permet de: +
-  +
-  * Rappeler des commandes +
-  * Générer la fin de noms de fichiers +
-  * Utiliser des alias +
-  * Utiliser les variables tableaux +
-  * Utiliser les variables numériques et l'arithmétique du langage C +
-  * Gérer des chaînes de caractères +
-  * Utiliser les fonctions +
- +
-Defenissez le shell courant de root en tant que **/bin/ksh** : +
- +
-<code> +
-# /bin/ksh +
-+
-</code> +
- +
-==Les Commandes Internes et Externes au shell== +
- +
-Les commandes internes au shell sont des commandes telles **cd**. Pour vérifier le type de commande, il faut utiliser la commande **type** en tant que **root** : +
- +
-<code> +
-# type cd +
-cd est une commande prédéfinie du shell +
-</code> +
- +
-Les commandes externes au shell sont des binaires exécutables ou des scripts, généralement situés dans /usr/sbin, /usr/bin, /usr/openwin/bin ou /usr/ucb : +
- +
-<code> +
-# type ifconfig +
-ifconfig est /usr/sbin/ifconfig +
-</code> +
- +
-==Les Aliases== +
- +
-Les alias sont des noms permettant de désigner une commande ou une suite de commandes et ne sont spécifiques qu'au shell qui les a créés ainsi qu'à l'environnement de l'utilisateur : +
- +
-<code> +
-# type stop +
-stop est un alias exporté pour kill -STOP +
-</code> +
- +
-ou +
- +
-<code> +
-# su - test +
-Sun Microsystems Inc.   SunOS 5.10      Generic January 2005 +
-$ type ls +
-ls est un alias suivi pour /usr/bin/ls +
-</code> +
- +
-<WRAP center round important> +
-Notez que dans ce cas l'alias **ls** est en effet un alias qui utilise la **commande** ls elle-même. +
-</WRAP> +
- +
-La liste des alias définis peut être visualisée en utilisant la commande **alias** : +
- +
-<code> +
-$ alias +
-autoload='typeset -fu' +
-command='command ' +
-functions='typeset -f' +
-history='fc -l' +
-integer='typeset -i' +
-local=typeset +
-ls=/usr/bin/ls +
-nohup='nohup ' +
-r='fc -e -' +
-stop='kill -STOP' +
-suspend='kill -STOP $$' +
-</code> +
- +
-Un alias se définit en utilisant de nouveau la commande **alias** : +
- +
-<code> +
-$ alias dir='ls -l' +
-$ alias +
-autoload='typeset -fu' +
-command='command ' +
-dir='ls -l' +
-functions='typeset -f' +
-history='fc -l' +
-integer='typeset -i' +
-local=typeset +
-ls=/usr/bin/ls +
-nohup='nohup ' +
-r='fc -e -' +
-stop='kill -STOP' +
-suspend='kill -STOP $$' +
-$ dir +
-total 6 +
--rw-r--r--   1 test     other        136 août 15 10:19 local.cshrc +
--rw-r--r--   1 test     other        157 août 15 10:19 local.login +
--rw-r--r--   1 test     other        174 août 15 10:19 local.profile +
-</code> +
- +
-<WRAP center round important> +
-Notez que la liste des alias contient, sans distinction, les alias définis dans les fichiers de démarrage du système ainsi que l'alias **dir** créé par **test** qui n'est que disponible à **test** dans le terminal courant. +
-</WRAP> +
- +
-Pour supprimer un alias, il convient d'utiliser la commande **unalias** : +
- +
-<code> +
-$ unalias dir +
-$ alias +
-autoload='typeset -fu' +
-cat=/usr/bin/cat +
-command='command ' +
-functions='typeset -f' +
-history='fc -l' +
-integer='typeset -i' +
-local=typeset +
-ls=/usr/bin/ls +
-nohup='nohup ' +
-r='fc -e -' +
-stop='kill -STOP' +
-suspend='kill -STOP $$' +
-</code> +
- +
-Pour forcer l'exécution d'une commande et non l'alias il faut faire précéder la commande par le caractère **\** : +
- +
-<code> +
-$ alias ls='ls -l' +
-$ ls +
-total 6 +
--rw-r--r--   1 test     other        136 août 15 10:19 local.cshrc +
--rw-r--r--   1 test     other        157 août 15 10:19 local.login +
--rw-r--r--   1 test     other        174 août 15 10:19 local.profile +
-$ \ls +
-local.cshrc    local.login    local.profile +
-</code> +
- +
-<WRAP center round important> +
-Dans l'exemple ci-dessus, la première commande étant un alias, la sortie est celle de la commande **ls -l** tandis que la deuxième est celle de la commande **ls** simple. +
-</WRAP> +
- +
-==Le Prompt== +
- +
-Le prompt d'un utilisateur dépend de son statut : +
- +
-  * **$** pour un utilisateur normal +
-  * **#** pour root +
- +
-==Rappeler des Commandes == +
- +
-Le shell **ksh** permet le rappel des dernières commandes saisies. Afin de connaître la liste des commandes mémorisées, utilisez la commande **history** en tant que l'utilisateur **test** : +
- +
-<code> +
-$ history +
-5       exit +
-6       type ls +
-7       alias +
-8       alias dir='ls -l' +
-9       alias +
-10      cat /etc/shells +
-11      dir +
-12      \dir +
-13      unalias dir +
-14      alias +
-15      alias ls='ls -l' +
-16      ls +
-17      \ls +
-18      which chsh +
-19      ls -a +
-20      history +
-</code> +
- +
-Rappelez-vous que la commande **history** est un alias : +
- +
-<code> +
-$ alias +
-... +
-history='fc -l' +
-... +
-</code> +
- +
-En réalité donc c'est la commande **fc** qui est appelée. +
- +
-L'historique des commandes est en mode **emacs** par défaut. Afin de pouvoir rappeler les dernières commandes saisies, il convient de passer en mode **emacs** : +
- +
-<code> +
-$ set -o emacs +
-</code> +
- +
-Le rappel de la dernière commande se fait en utilisant les touches **[CTRL]-[P]** et le rappel de la commande suivante se fait en utilisant les touches **[CTRL]-[N]** : +
- +
-^ Caractère de Contrôle  ^ Définition +
-| [CTRL]-[P] | Rappelle la commande précédente   |  +
-| [CTRL]-[N] | Rappelle la commande suivante    | +
- +
-Le paramétrage de la fonction du rappel des commandes est fait en définissant des variables système. +
- +
-Afin de faciliter la définition de ces variables, créez le fichier **/etc/kshrc** en tant que **root** : +
- +
-<file> +
-+
-# This file is the common Environment setup for Korn Shell +
-+
-HISTSIZE=256 +
-HISTFILE=$HOME/.sh_history +
-export HISTFILE HISTSIZE +
-set -o emacs +
-</file> +
- +
-Vous noterez que dans ce fichier, la valeur de **HISTSIZE** est de **256**. Ceci implique que les dernières 256 commandes sont mémorisées. +
- +
-Devenez maintenant l'utilisateur standard **test** : +
- +
-<code> +
-# su - test +
-Sun Microsystems Inc.   SunOS 5.10      Generic January 2005 +
-+
-</code> +
- +
-Les commandes mémorisées sont stockées dans le fichier **$HOME/.sh_history** ou **$HOME** indique le répertoire personnel de l'utilisateur concerné : +
- +
-<code> +
-$ cat $HOME/.sh_history +
-echo $SHELL +
-whereis bash +
-which bash +
-exit +
-exit +
-type ls +
-alias +
-alias dir='ls -l' +
-alias +
-cat /etc/shells +
-dir +
-\dir +
-unalias dir +
-alias +
-alias ls='ls -l' +
-ls +
-\ls +
-ls -a +
-history +
-alias +
-set -o emacs +
-exit +
-cat $HOME/.sh_history +
-</code> +
- +
-<WRAP center round important> +
-La comparaison du contenu de ce fichier avec la sortie de la commande **history** démontre que les deux sont identiques, à part bien évidemment, la dernière commande saisie, soit history. +
-</WRAP> +
- +
-Vous pouvez rappeler une commande spécifique de l'historique en utilisant la commande **fc -e -** suivi du numéro de la commande à rappeler : +
- +
-<code> +
-$ history +
-... +
-52      ls +
-53      pwd +
-54      vmstat +
-55      df +
-56      history +
-$ fc -e - 52 +
-ls +
-local.cshrc    local.login    local.profile +
-</code> +
- +
-Afin de faire appel à au fichier **/etc/kshrc**, éditez maintenant le fichier **/etc/profile** : +
- +
-<file> +
-$ exit +
-# vi /etc/profile +
-</file> +
- +
-en y ajoutant les lignes suivantes : +
- +
-<code> +
-ENV=/etc/kshrc +
-export ENV +
-</code> +
- +
-Vous obtiendrez une fenêtre similaire à celle-ci : +
- +
-<file> +
-#ident  "@(#)profile    1.19    01/03/13 SMI"   /* SVr4.0 1.3   */ +
- +
-# The profile that all logins get before using their own .profile. +
- +
-trap ""  2 3 +
-export LOGNAME PATH +
- +
-ENV=/etc/kshrc +
-export ENV +
- +
-if [ "$TERM" = ""+
-then +
-        if /bin/i386 +
-        then +
-                TERM=sun-color +
-        else +
-                TERM=sun +
-        fi +
-        export TERM +
-fi +
- +
-#       Login and -su shells get /etc/profile services. +
-#       -rsh is given its environment in its .profile. +
-</file> +
- +
-Connectez-vous de nouveau en tant que test :  +
- +
-<code> +
-# su - test +
-Sun Microsystems Inc.   SunOS 5.10      Generic January 2005 +
-</code> +
- +
-Vérifiez que vous pouvez rappeler les dernières commandes dans votre console. +
- +
-... +
- +
- +
------+
 <html> <html>
-<center+<DIV ALIGN="CENTER"
-Copyright © 2004-2017 Hugh Norris.<br><br+Copyright © 2020 Hugh Norris<BR><BR
-<a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/fr/"><img alt="Licence Creative Commons" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/3.0/fr/88x31.png" /></a><br />Ce(tte) oeuvre est mise à disposition selon les termes de la <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/fr/">Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 3.0 France</a>+Document non-contractuelLes prix, les conditions et le programme peuvent être modifiés sans préavis
-</center>+</div>
 </html> </html>
  
Menu