• Aucun résultat trouvé

Ex´ ecution d’une commande ` a distance - commande rsh (ou remsh) 39

3.5 Ex´ ecution d’une commande ` a distance - com-mande rsh (ou remsh)

Syntaxe :

rsh [-l username] [-n] commande remsh [-l username] [-n] commande

Les commandes "rsh" et "remsh" sont ´equivalentes. Sur certains syt`emes il n’exite que la commande "rsh"2, sur d’autres que seule la commande

"remsh" sera disponible3), sur d’autres les deux cohabiteront4. Dans toute la suite de ce paragraphe, seulement "rsh" sera cit´e.

La commande "rsh" ex´ecute une commande non interactive sur un syst`eme distant. Le nom du compte est le m^eme que le nom du compte local `a moins que vous ne sp´ecifiez l’option "-l".

Comme "rcp", "rsh" ne demande pas de mot de passe si une ´equivalence syst`eme ou utilisateur a ´et´e configur´ee. Dans le cas contraire, elle ne fonctionne pas (message "Permission denied"). La commande "rsh"

transmet les signaux "INTERRUPT", "QUIT" et "HUP" `a la commande distante.

Pour plus de pr´ecisions, reportez vous `a "signal(2)" et au chapitre 5.

Vous pouvez utiliser les m´etacaract`eres avec "rsh". Si vous voulez qu’ils soient interpr´et´es sur le site distant, assurez-vous qu’ils sont bien entre simples quotes (cf. sections 4.5 et 4.6).

Remarque 3.2 :

”rsh” ne peut pas ex´ecuter des commandes en mode interactif comme ”vi”, ”emacs”, etc.

3.5.1 Comparaisons telnet/rlogin et ftp/rcp

Fonctionnalit´e telnet rlogin

Ensemble de commandes. Oui Non

Peut se connecter `a des syst`emes non Unix.

Oui Non5

Peut ^etre configur´e en connexion automatique.

Non Oui (fichiers

/etc/hosts.equiv et ~/.rhosts) Peut utiliser l’adresse IP pour la

connexion.

Oui Oui

Suite page suivante · · ·

2SunOSetSolarissur les syst`emes de Sun Microsystems,Irix sur les machines de Silicon Graphics,DigitalUnixsur les machines de Compacq - ex Digital Equipment Corp.

3UTekV sur les anciens syst`emesUnixde Tektronix,HP–UXsur les syst`emes de Hewlett-Packard

4AIX, l’Unixd’IBM

5epend de l’implantation sur le syst`eme non-Unix.

S.Baudry, Introduction `a Unix– v4.0 39

Chapitre 3. Commandes usuelles de communication r´eseau

Suite de la page pr´ec´edente.

Fonctionnalit´e telnet rlogin

Sortie autoris´ee. Oui (vers "telnet"

en mode commande)

Oui (vers le terminal local)

Nombre de modes. 2 (commande et

connect´e)

1 (connect´e seulement) Peut ^etre lac´e depuis un programme

Shell.

Non Non

Tab. 3.2: Comparaisons telnet/rlogin

Remarque 3.3 :

Notez que ”telnet” et ”rlogin” peuvent ˆetre appel´es depuis un pro-gramme Shell, mais vous ne pouvez pas leur transmettre des infor-mations au clavier (comme vous pouvez le faire avec ”ftp”).

Fonctionnalit´e ftp rcp

Ensemble de commandes Oui Non

Peut transf´erer des fichiers sur un syst`eme non Unix

Oui Non6

Peut ^etre ex´ecut´e dans un programme Shell

Oui Oui

Peut mettre en jeu 3 nœuds Non Oui

Autorise les m´etacaract`eres Oui (commande

"glob")

Oui

Peut faire une copie r´ecursive Non Oui (option "-r") Peut configurer une ´equivalence

utilisateur

Equivalence utilisateur requise Non Oui

Peut utiliser une adresse IP pour la connexion

Oui Oui

Tab. 3.3: Comparaisons ftp/rlogin

6Sauf impl´ementation d’un serveur supportant ce type de connexion.

Deuxi` eme partie

Introduction au shell

41

Chapitre 4

Notions ´ el´ ementaires du Bourne Shell

4.1 Introduction

Le shell est un interpr´eteur de commandes qui : { initialise l’environnement,

{ g´en`ere le prompt.

Quand une commande est valid´ee, le shell 1. effectue les substitutions de variables, 2. interpr`ete les m´etacaract`eres,

3. g`ere les redirections et les pipes, 4. effectue les substitutions de commandes, 5. ex´ecute la commande.

C’est le m´ecanisme d’´evaluation du shell. Ces ´etapes sont `a garder en ´emoire pour toute commande saisie au clavier ou bien enregistr´ee dans un script.

Ce n’est pas ce qui est saisi qui sera

ex´ ecut´ e mais le r´ esultat de l’´ evaluation de l’expression.

Il existe plusieurs shells sous Unix :

{ le Bourne Shell (not´e "sh") anc^etre de tous les shells, utilis´es seulement pour l’´ecriture de proc´edures. Il n’offre aucune facilit´e pour l’emploi en mode interactif (pas d’historique de commandes, pas de rappels avec les fl`eches, etc.).

{ le C Shell (not´e "csh") plut^ot concu pour une interface avec les utilisateurs. Il permet le rappel des commandes avec les fl`eches, de g´erer une historique des commandes, etc. Sa syntaxe se rapproche de celle du langage C m^eme si le "C" veut dire "California"1. { le Korn Shell (not´e "ksh") est une extension du Bourne Shell avec

une partie des possibilit´es du C Shell.

1Ce shell a ´et´e d´evelopp´e `a l’universit´e ”UCB”, University of California – Berkeley.

43

Chapitre 4. Notions ´el´ementaires du Bourne Shell

{ le Bourne Again Shell (not´e "bash") est une variante du Bourne Shell, disponible dans le domaine public.

{ le TC Shell (not´e "tcsh") est une extension du C Shell. Il vient comme un rempla¸cant naturel du C Shell pour faire face `a la concur-rence du Korn Shell.

Le Bourne Shell, le Korn Shell et le Bash Shell sont compatibles entre eux (compatibilit´e Bourne Shell vers Korn Shell). Le C Shell et le TC Shell sont compatibles entre eux. Par contre, ces deux familles ne sont pas compatibles entre elles. Il est toutefois possible d’ex´ecuter des proc´edures Bourne Shell alors que le shell de login est le C Shell (sous certaines restrictions quant au mode de lancement).

4.2 Zones m´ emoire code, variables locales, va-riables d’environnement du shell

4.2.1 Description

Lors de la cr´eation d’un processus, trois zones m´emoires lui sont affect´ees :

la zone ”CODE”

Celle-ci repr´esente la zone m´emoire allou´ee au code ex´ecutable qui doit ^etre d´eroul´e par le processus.

la zone ”DATA”

Celle-ci repr´esente la zone m´emoire r´eserv´ee pour les donn´ees propres au code ex´ecutable.

la zone ”ENV”

Celle-ci repr´esente une zone m´emoire r´eserv´ee pour les donn´ees

propres au code ex´ecutable. Elle est aussi appel´ee "zone d’environnement".

En faisant l’analogie avec un programme source, la zone "CODE" correspond aux instructions du programme, tandis que les zones "DATA" et "ENV"

correspondent aux zones associ´ees aux d´eclarations de variables, la zone "ENV" r´ef´eren¸cant les variables globales.

Lors de la cr´eation d’un sous processus, Unix duplique l’environnement en ne gardant que les variables globales. Pour ex´ecuter une commande, le shell cr´ee un sous processus dans lequel il substitue le code par le code de la commande `a ex´ecuter. La m´ethode suivie est illustr´ee

`

a la figure 4.1.

L’appel syst`eme "fork()" cr´ee le processus et ne garde que la zone m´emoire "ENV". L’appel syst`eme "exec()" ex´ecute la commande dans le processus cr´e´e.

Remarque 4.1 :

”exec” est aussi une commande du shell qui a la mˆeme fonctionna-lit´e.

La commande "% exec ls" ex´ecute "ls" dans le m^eme processus du shell (substitue le code du shell par le code de la commande "ls" dans la

4.2. Zones m´emoire code, variables locales, variables d’environnement du shell

Fig.4.1 – Ex´ecution d’une commande sousUnix

S.Baudry, Introduction au shell – v4.0 45

Chapitre 4. Notions ´el´ementaires du Bourne Shell

zone m´emoire "CODE" et s’arr^ete d`es que son ex´ecution est termin´ee.

On est donc d´elogg´e.

4.2.2 Les commandes de gestion des variables du shell

Syntaxe : set

variable=valeur unset variable export variable printenv

env

La commande "set" sans argurments affiche la liste des variables locales au shell

La commande "unset" suivi d’un nom de variable permet d’effacer celle-ci de la zone des variables locales du shell.

La commande "export" suivie du nom d’une variable, permet de placer une variable d´efinie de la zone locale au shell vers la zone d’environnement (exportation de la variable).

Les commandes "env" et "printenv" listent les variables de la zone d’environnement et les valeurs qui leur sont affect´ees.

4.2.3 Variables usuelles

Le tableau 4.1 donne la liste des variables les plus usuelles du shell Unix.

Variable Signification

PATH R´ef´erence les chemins d’acc`es scrut´es lors de l’ex´ecution d’une commande.

HOME R´ef´erence le r´epertoire de login. C’est le r´epertoire par d´efaut de la commande "cd".

PS1 Invite du shell.

PS2 Invite secondaire du shell. Lorsque vous demandez `a ce qu’une commande se poursuive apr`es un retour chariot, c’est le contenu de cette de cette variable qui sera affich´e.

LANG Langue utilis´ee pour les messages.

HISTSIZE Nombre de commandes `a m´emoriser dans l’historique (Korn Shell uniquement).

Tab. 4.1: Liste des variables les plus usuelles.