SELFHTML/Aides à la navigation CGI/Perl Fonctions Perl |
Fonctions pour les informations tirées des fichiers de configuration |
|
Généralités sur ces fonctions |
|
Les fonctions rassemblées ici servent à rechercher des éléments dans les fichiers de configuration système. Il s'agit ici exclusivement de données de configuration de systèmes Unix. L'avantage des fonctions décrites ici par rapport à la lecture directe de ces fichiers est qu'elles sont indépendantes de l'ordinateur, c'est à dire que les commandes fonctionnent également quand un système Unix est configuré autrement que la normale et que les fichiers correspondants sont placés ailleurs.
Les fichiers de configuration importants sont présentés brièvement ci-après. Les noms de chemin correspondent à l'emplacement habituel.
Dans ce fichier sont sauvegardés les groupes d'habilitation et leurs membres. Un groupe d'habilitation peut posséder certains droits sur des fichiers et répertoires qui appartiennent à l'un des ses membres. Outre les enregistrements pour les groupes d'habilitation "humains", le fichier en contient également certains pour des groupes d'habilitation réservés, spécifiques à l'ordinateur comme par exemple mail
, bin
ou bien tty
. Les mots de passe dans ce fichier ne sont sauvegardés que sous leur formes cryptée.
Données typiques (Exemple):
root x 0 root
bin x 1 root bin daemon
sys x 101 root bin sys
Chacune des lignes de ce fichier contient le nom d'un groupe d'habilitation suivi de son mot de passe (crypté), puis du numéro de groupe (GID) suivie elle même de la liste des membres du groupe.
Les fonctions relatives à ce fichier sont endgrent getgrent getgrgid getgrnam setgrent
Dans l'exemple sur la fonction getgrent, il est montré comment vous pouvez sortir l'intégralité du fichier /etc/groups. Ce qui vous permet d'avoir une vue d'ensemble complète sur le contenu du fichier.
Dans ce fichier se trouvent les affectations d'adresses IP et de noms de domaine ou noms d'ordinateur que l'ordinateur doit résoudre lui-même.
Données typiques (Exemple):
127.0.0.1 localhost
192.168.10.101 soleil.galaxie.fr soleil
192.168.85.1 jupiter.edu.rennes.fr minerve
Chaque ligne du fichier contient une adresse IP suivie du nom de domaine officiel, suivi lui-même au choix du nom interne de l'ordinateur, respectivement séparés par des espaces ou des tabulations. Derrière le nom interne de l'ordinateur peut encore suivre aussi un nom d'alias.
Les fonctions relatives à ce fichier sont endhostent gethostbyaddr gethostbyname gethostent sethostent
Dans l'exemple sur la fonction gethostent il est montré comment vous pouvez sortir l'intégralité du fichier /etc/hosts Ce qui vous permet d'avoir une vue d'ensemble complète sur le contenu du fichier.
Dans ce fichier sont associés des noms de réseau et l'adresse IP qui leur est propre. Ici sont aussi souvent mentionnés le type d'adresse et le numéro du réseau.
Données typiques (Exemple):
loopback 127.0.0.0 2 2130706432
Chaque ligne du fichier contient un nom de réseau, l'adresse IP du réseau qui lui est associée, le type d'adresse et le numéro de réseau.
Les fonctions relatives à ce fichier sont endnetent getnetbyaddr getnetbyname getnetent setnetent
Dans l'exemple sur la fonction getnetent il est montré comment vous pouvez sortir l'intégralité du fichier /etc/networks Ce qui vous permet d'avoir une vue d'ensemble complète sur le contenu du fichier.
Dans ce fichier sont sauvegardées toutes les données importantes de tous les utilisateurs ayant accès à l'ordinateur. En font partie par exemple les noms d'utilisateur, leur mot de passe, les numéros d'utilisateur (UIDs) et les répertoires de domiciliation des utilisateurs. Outre les éléments pour les utilisateurs normaux, le fichiers contient aussi ceux pour les utilisateurs réservés comme par exemple root
(sur certains ordinateurs aussi ruth
), daemon
ou ftp
(pour l'accès FTP anonyme). Les mots de passe ne sont sauvegardé que sous forme cryptée dans ce fichier.
Données typiques (Exemple):
root x 0 0 root /root /bin/mysh
bin x 1 1 bin /bin /bin/mysh
customer x 29 29 client /usr/lib/client /bin/mysh
Chaque ligne du fichier contient le nom d'utilisateur, le mot de passe qui lui est associé (sous forme cryptée), son numéro d'utilisateur (UID), le numéro de son groupe d'utilisation (GID), des mentions descriptives sur l'utilisateur, son répertoire de domiciliation sur l'ordinateur, sa console (instance de l'interpréteur de commande), et le cas échéant des mentions sur la date de péremption de son inscription.
Les fonctions relatives à ce fichier sont endpwent getpwent getpwnam getpwuid setpwent
Dans l'exemple sur la fonction getpwent il est montré comment vous pouvez sortir l'intégralité du fichier /etc/passwd Ce qui vous permet d'avoir une vue d'ensemble complète sur le contenu du fichier.
Dans ce fichier sont enregistrés les noms de protocole et numéros de protocole des protocoles de transmission soutenus par le système.
Données typiques (Exemple):
ip IP 0
icmp ICMP 1
igmp IGMP 2
ggp GGP 3
tcp TCP 6
Chaque ligne du fichier contient le nom du protocole de transmission, le numéro du protocole et le nom d'alias du protocole.
Les fonctions relatives à ce fichier sont endprotoent getprotobyname getprotobynumber getprotoent setprotoent
Dans l'exemple sur la fonction getprotoent il est montré comment vous pouvez sortir l'intégralité du fichier /etc/protocols Ce qui vous permet d'avoir une vue d'ensemble complète sur le contenu du fichier.
Dans ce fichier sont sauvegardés les noms de services du réseau ainsi que les numéros de port et les noms de protocole qui leur sont associés.
Données typiques (Exemple):
ftp 21 tcp
telnet 23 tcp
smtp mail 25 tcp
whois nicname 43 tcp
domain nameserver 53 tcp
gopher 70 tcp
finger 79 tcp
www http 80 tcp
www 80 udp
Les fonctions relatives à ce fichier sont endservent getservbyname getservbyport getservent setservent
Dans l'exemple sur la fonction getservent il est montré comment vous pouvez sortir l'intégralité du fichier /etc/services Ce qui vous permet d'avoir une vue d'ensemble complète sur le contenu du fichier.
Saute à la fin du fichier /etc/group et termine l'accès à ce fichier.
N'attend aucun paramètre.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my $valeur = getgrent(); print "$valeur\n"; endgrent(); print "</pre></body></html>\n"; |
L'exemple recherche le premier élément de /etc/groups avec getgrent sort la valeur trouvée et saute à la fin du fichier.
Saute à la fin du fichier /etc/hosts et termine l'accès à ce fichier.
N'attend aucun paramètre.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my $valeur = gethostent(); print "$valeur\n"; endhostent(); print "</pre></body></html>\n"; |
L'exemple recherche le premier élément de /etc/hosts avec gethostent sort la valeur trouvée et saute à la fin du fichier.
Saute à la fin du fichier /etc/networks et termine l'accès à ce fichier.
N'attend aucun paramètre.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my $valeur = getnetent(); print "$valeur\n"; endnetent(); print "</pre></body></html>\n"; |
L'exemple recherche le premier élément de /etc/networks avec getnetent sort la valeur trouvée et saute à la fin du fichier.
Saute à la fin du fichier /etc/protocols et termine l'accès à ce fichier.
N'attend aucun paramètre.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my $valeur = getprotoent(); print "$valeur\n"; endprotent(); print "</pre></body></html>\n"; |
L'exemple recherche le premier élément de /etc/protocols avec getprotoent sort la valeur trouvée et saute à la fin du fichier.
Saute à la fin du fichier /etc/passwd et termine l'accès à ce fichier.
N'attend aucun paramètre.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my $valeur = getnetent(); print "$valeur\n"; endnetent(); print "</pre></body></html>\n"; |
L'exemple recherche le premier élément de /etc/passwd avec getpwent sort la valeur trouvée et saute à la fin du fichier.
Saute à la fin du fichier /etc/services et termine l'accès à ce fichier.
N'attend aucun paramètre.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my $valeur = getservent(); print "$valeur\n"; endservent(); print "</pre></body></html>\n"; |
L'exemple recherche le premier élément de /etc/services avec getnetent sort la valeur trouvée et saute à la fin du fichier.
Recherche en contexte scalaire l'élément suivant dans le fichier /etc/group ou dans un contexte de liste, une liste avec quatre éléments.
N'attend aucun paramètre.
Renvoie selon le contexte soit l'élément suivant du fichier ou la liste. À la fin du fichier undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my @Liste = getgrent(); while(@Liste) { print "$Liste[0]] $Liste[1] $Liste[2] $Liste[3]\n"; @Liste = getgrent(); } print "</pre></body></html>\n"; |
L'exemple montre comment vous pouvez sortir dans le navigateur tous les éléments du fichier /etc/groups avec un script CGI. Tout d'abord getgrent
est appelé une première fois. La valeur renvoyée est interprétée dans un contexte de liste et sauvegardée dans la liste @Liste
. Aussi longtemps que la liste a un contenu - while(@Liste)
- les quatre éléments de la liste sont sortis, et getgrent
est appelé pour la prochaine boucle. Les quatre éléments de la liste retournés par la fonction sont:
$Liste[0]
= Nom du groupe d'habilitation,
$Liste[1]
= Mot de passe du groupe d'habilitation (sous forme cryptée),
$Liste[2]
= Numéro du groupe d'habilitation (GID),
$Liste[3]
= Noms des membres du groupe d'habilitation
Recherche l'élément correspondant à un certain numéro de groupe (GID) dans /etc/group. En contexte scalaire, le nom de groupe correspondant est recherché, en contexte de liste, tout l'enregistrement correspondant au GID.
Attend comme paramètre:
1. le GID souhaité.
Renvoie selon le contexte, soit le nom de groupe, soit la liste. Si le GID mentionné n'a pas été trouvé, undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body>\n"; ($nom,$mot_passe,$Gid,$membre) = getgrgid(2); print "<h3>Contexte de liste:</h3>"; print "<pre>$nom\n$GrPasswort\n$Gid\n$membre</pre>"; print "<h3>Contexte scalaire:</h3><pre>"; my $valeur = getgrgid(2); print "<pre>$valeur</pre>\n"; print "</body></html>\n"; |
L'exemple appelle deux fois en tout la fonction getgrgid
d'abord en contexte de liste, et plus tard en contexte scalaire. Dans les deux cas, 2
est transmis comme numéro de groupe recherché (GID). En contexte de liste l'élément trouvé complet se composant du nom de groupe, du mot de passe du groupe (crypté), du numéro de groupe et du nom de membre est envoyé au navigateur pour être sorti. En contexte scalaire, seul le nom de groupe correspondant au numéro de groupe est sorti.
Recherche l'élément correspondant à un certain numéro de groupe dans /etc/group. En contexte scalaire, le numéro de groupe (GID) correspondant au nom mentionné est recherché, en contexte de liste, tout l'enregistrement correspondant au nom de groupe.
Attend comme paramètre:
1. le nom de groupe désiré.
Renvoie selon le contexte, soit le numéro de groupe (GID), soit la liste. Si le nom de groupe mentionné n'a pas été trouvé undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body>\n"; (my $nom, my $mot_passe, my $Gid, my $membre) = getgrnam("mail"); print "<h3>Contexte de liste:</h3>"; print "<pre>$nom\n$mot_passe\n$Gid\n$membre</pre>"; print "<h3>Contexte scalaire:</h3>"; my $valeur = getgrnam("mail"); print "<pre>$valeur</pre>\n"; print "</body></html>\n"; |
L'exemple appelle deux fois en tout la fonction getgrgid
, d'abord en contexte de liste, et plus tard en contexte scalaire. Dans les deux cas "mail"
est transmis comme nom de groupe. ). En contexte de liste l'élément trouvé complet se composant du nom de groupe, du mot de passe du groupe (crypté), du numéro de groupe et du nom de membre est envoyé au navigateur pour être sorti. En contexte scalaire, seul le numéro de groupe (GID) correspondant au nom de groupe est sorti.
Recherche le nom d'hôte correspondant à une adresse IP déterminée dans le fichier /etc/hosts.
Attend comme paramètre:
1. l'adresse IP désirée et cela sous forme numérique exprimée en binaire.
2. le type d'adresse IP (numérique).
Renvoie le nom d'hôte correspondant. Si l'adresse IP mentionnée n'a pas été trouvée, undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; use Socket; my $addr = inet_aton("127.0.0.1"); my $valeur = gethostbyaddr($addr, AF_INET); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple montre comment vous pouvez rechercher le nom d'hôte d'une adresse IP sur l'ordinateur. Pour assurer la passation quelque peu compliquée des paramètres de la fonction gethostbyaddr
, le module standard Socket
est utilisé. Par l'appel de la fonction de module inet_aton
une adresse IP transmise sous la forme d'écriture normale est transformée dans la forme d'écriture binaire indispensable. Le résultat est sauvegardé dans la scalaire $addr
. Le module Socket
dispose aussi de constantes pour le type d'adresse. La constante pour le deuxième paramètre de gethostbyaddr
est AF_INET
. Par la transmission de $addr
et de AF_INET
, gethostbyaddr
est correctement pourvu et sort le nom d'hôte correspondant à l'adresse de l'exemple 127.0.0.1
(en principe localhost
).
Recherche l'adresse IP correspondant au nom d'hôte déterminé dans le fichier /etc/hosts .
Attend comme paramètre:
1. le nom d'hôte déterminé désiré.
Renvoie l'adresse IP correspondante, à vrai dire sous forme numérique exprimée en binaire.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; use Socket; my $addr = gethostbyname("localhost"); my $valeur = inet_ntoa($addr); print "$valeur"; print "</pre></body></html>\n"; |
L'exemple montre comment vous pouvez rechercher l'adresse IP d'un nom d'hôte sur l'ordinateur. Pour ce faire, le module Standard Socket
est employé. Il permet de convertir commodément sous sa forme courante la valeur numérique binaire de la valeur renvoyée par gethostbyname
, qui dans l'exemple est sauvegardée dans la scalaire $addr
. Par l'appel de la fonction de module inet_ntoa
, $addr
est transformé dans sa forme d'écriture habituelle. Le résultat de la conversion est sauvegardé dans l'exemple dans la scalaire $valeur
. Ensuite, l'adresse IP du nom d'hôte localhost
est sortie (en principe 127.0.0.1
).
Recherche en contexte scalaire l'élément suivant dans le fichier /etc/hosts ou dans un contexte de liste, une liste avec cinq éléments et plus.
N'attend aucun paramètre.
Renvoie selon le contexte soit l'élément suivant du fichier ou la liste. À la fin du fichier, undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my @Liste = gethostent(); while(@Liste) { print "$Liste[0] $Liste[1] $Liste[2]"; for(my $i = 0; $i < $Liste[3]; $i++) { (my $a, my $b, my $c, my $d) = unpack('C4',$Liste[4+$i]); print " $a.$b.$c.$d"; } print "\n"; @Liste = gethostent(); } print "</pre></body></html>\n"; |
L'exemple montre comment vous pouvez sortir dans le navigateur tous les éléments du fichier /etc/hosts avec un script CGI. Tout d'abord gethostent
est appelé une première fois. La valeur renvoyée est interprétée dans un contexte de liste et sauvegardée dans la liste @Liste
. Aussi longtemps que la liste a un contenu - while(@Liste)
- les éléments de la liste sont sortis et gethostent
est appelé pour la prochaine boucle. La liste contient comme dernier élément de liste à son tour une liste, de sorte qu'une autre boucle for intérieure est nécessaire pour rechercher tous les éléments.
Les éléments de la liste renvoyés par la fonction sont:
$Liste[0]
= nom d'hôte,
$Liste[1]
= nom d'alias du nom d'hôte,
$Liste[2]
= type d'adresse,
$Liste[3]
= nombre d'éléments de la liste restant à venir
$Liste[4]
et autres = adresses IP attribuées
Les adresses IP attribuées sont sauvegardées en binaire. Pour obtenir la représentation habituelle de quatre nombres, la forme binaire d'écriture doit d'abord être convertie. Ce qui est rendu possible par l'application de la fonction unpack et de C4
en tant que premier paramètre, comme dans l'exemple ci-dessus. De cette façon, les quatre nombres distincts de l'adresse IP y sont recherchés et sauvegardés dans les scalaires $a
, $b
, $c
et $d
.
N'attend aucun paramètre.
Renvoie l'identification de l'utilisateur actuel
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my $valeur = getlogin(); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple recherche l'identification de l'utilisateur avec getlogin
, la sauvegarde dans la scalaire $valeur
et sort celle-ci pour le contrôle.
Recherche le nom de réseau correspondant à une adresse IP déterminée dans le fichier /etc/networks.
Attend comme paramètre:
1. l'adresse IP désirée et cela sous forme numérique exprimée en binaire.
2. le type d'adresse IP (numérique).
Renvoie le nom de réseau correspondant. Si l'adresse IP mentionnée n'a pas été trouvée. undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; use Socket; my $addr = inet_aton("127.0.0.0"); my $valeur = getnetbyaddr($addr, AF_INET); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple montre comment vous pouvez rechercher le nom de réseau d'une adresse IP sur l'ordinateur. Pour assurer la passation quelque peu compliquée des paramètres de la fonction getnetbyaddr
, le module standard Socket
est utilisé. Par l'appel de la fonction de module inet_aton
une adresse IP transmise sous la forme d'écriture normale est transformée dans la forme d'écriture binaire indispensable. Le résultat est sauvegardé dans la scalaire $addr
. Le module Socket
dispose aussi de constantes pour le type d'adresse. La constante pour le deuxième paramètre de gethostbyaddr
est AF_INET
. Par la transmission de $addr
et de AF_INET
, getnetbyaddr
est correctement pourvu et sort le nom de réseau correspondant à l'adresse de l'exemple 127.0.0.0
(en principe loopback
).
Recherche l'adresse IP correspondant au nom de réseau déterminé dans le fichier /etc/networks.
Attend comme paramètre:
1. le nom de réseau désiré.
Renvoie l'adresse IP correspondante, à vrai dire sous forme numérique exprimée en binaire.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; use Socket; my $addr = getnetbyname("loopback"); my $valeur = inet_ntoa($addr); print "$valeur"; print "</pre></body></html>\n"; |
L'exemple montre comment vous pouvez rechercher l'adresse IP d'un nom de réseau sur l'ordinateur. Pour ce faire, le module standard Socket
est utilisé. Il permet de convertir commodément sous sa forme courante la valeur numérique binaire de la valeur renvoyée par getnetbyname
, qui dans l'exemple est sauvegardée dans la scalaire $addr
. Par l'appel de la fonction de module inet_ntoa
$addr
est transformé dans sa forme d'écriture habituelle. Le résultat de la conversion est sauvegardé dans l'exemple dans la scalaire $valeur
. Ensuite, l'adresse IP du nom de réseau loopback
est sortie (en principe 127.0.0.0
).
Recherche en contexte scalaire l'élément suivant dans le fichier /etc/networks ou dans un contexte de liste, une liste avec quatre éléments.
N'attend aucun paramètre.
Renvoie selon le contexte soit l'élément suivant du fichier ou la liste. À la fin du fichier, undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my @Liste = getnetent(); while(@Liste) { print "$Liste[0] $Liste[1] $Liste[2] $Liste[3]\n"; @Liste = getnetent(); } print "</pre></body></html>\n"; |
L'exemple montre comment vous pouvez sortir dans le navigateur tous les éléments du fichier /etc/networks avec un script CGI. Tout d'abord getnetent
est appelé une première fois. La valeur renvoyée est interprétée dans un contexte de liste et sauvegardée dans la liste @Liste
. Aussi longtemps que la liste a un contenu - while(@Liste)
-les quatre éléments de la liste sont sortis et getnetent
est appelé pour la prochaine boucle. Les quatre éléments de la liste renvoyés par la fonction sont:
$Liste[0]
= nom du réseau,
$Liste[1]
= nom d'alias du réseau,
$Liste[2]
= type d'adresse,
$Liste[3]
= numéro du réseau
Recherche le numéro de protocole d'un nom de protocole déterminé dans le fichier /etc/protocols .
Attend comme paramètre:
1. le nom de protocole désiré.
Renvoie le numéro de protocole correspondant. Si le nom de protocole transmis n'a pas été trouvé undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my $valeur = getprotobyname("tcp"); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple recherche le numéro de protocole du protocole tcp
. C'est a cela que sert l'appel de getprotobyname("tcp")
, dont la valeur renvoyée est sauvegardée dans la scalaire $valeur
. Pour le contrôle la valeur est sortie.
Recherche le nom de protocole d'un numéro de protocole déterminé dans le fichier /etc/protocols.
Attend comme paramètre:
1. le numéro de protocole désiré.
Renvoie le nom de protocole correspondant. Si le numéro de protocole transmis n'a pas été trouvé undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my $valeur = getprotobynumber(17); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple recherche le nom de protocole du numéro de protocole 17
. C'est a cela que sert l'appel de getprotobynumber(17)
, dont la valeur renvoyée est sauvegardée dans la scalaire $valeur
. Pour le contrôle la valeur est sortie.
Recherche en contexte scalaire l'élément suivant dans le fichier /etc/protocols ou dans un contexte de liste, une liste avec trois éléments.
N'attend aucun paramètre.
Renvoie selon le contexte soit l'élément suivant du fichier ou la liste. À la fin du fichier, undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my @Liste = getprotoent(); while(@Liste) { print "$Liste[0] $Liste[1] $Liste[2]\n"; @Liste = getprotoent(); } print "</pre></body></html>\n"; |
L'exemple montre comment vous pouvez sortir dans le navigateur tous les éléments du fichier /etc/protocols avec un script CGI. Tout d'abord getprotoent
est appelé une première fois. La valeur renvoyée est interprétée dans un contexte de liste et sauvegardée dans la liste @Liste
. . Aussi longtemps que la liste a un contenu - while(@Liste)
- les trois éléments de la liste sont sortis et getnetent
est appelé pour la prochaine boucle. Les trois éléments de la liste renvoyés par la fonction sont:
$Liste[0]
= nom de protocole,
$Liste[1]
= numéro de protocole,
$Liste[2]
= nom d'alias du protocole
Recherche en contexte scalaire l'élément suivant dans le fichier /etc/passwd ou dans un contexte de liste, une liste jusqu'à neuf éléments.
N'attend aucun paramètre.
Renvoie selon le contexte soit l'élément suivant du fichier ou la liste. À la fin du fichier, undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my @Liste = getpwent(); while(@Liste) { print "$Liste[0] $Liste[1] $Liste[2] $Liste[3] $Liste[4] $Liste[5] $Liste[6] $Liste[7] $Liste[8]\n"; @Liste = getpwent(); } print "</pre></body></html>\n"; |
L'exemple montre comment vous pouvez sortir dans le navigateur tous les éléments du fichier /etc/passwd avec un script CGI. Tout d'abord getpwent
est appelé une première fois. La valeur renvoyée est interprétée dans un contexte de liste et sauvegardée dans la liste @Liste
. Aussi longtemps que la liste a un contenu - while(@Liste)
- les neuf éléments de la liste sont sortis et getpwent
est appelé pour la prochaine boucle. Les neuf éléments de la liste renvoyés par la fonction sont:
$Liste[0]
= nom d'utilisateur,
$Liste[1]
= mot de passe utilisateur (sous forme cryptée),
$Liste[2]
= numéro d'utilisateur (UID),
$Liste[3]
= numéro du groupe d'habilitation dont il fait partie (GID),
$Liste[4]
= mentions descriptives,
$Liste[5]
= mentions descriptives,
$Liste[6]
= répertoire de domiciliation de l'utilisateur,
$Liste[7]
= console de l'utilisateur,
$Liste[8]
= (facultatif) Date de péremption de l'élément
Recherche pour un nom d'utilisateur déterminé l'enregistrement correspondant dans le fichier /etc/passwd. Recherche en contexte scalaire le numéro d'utilisateur (UID) ou dans un contexte de liste, une liste jusqu'à neuf éléments.
Attend comme paramètre:
1. le nom d'utilisateur désiré.
Renvoie en contexte scalaire le numéro d'utilisateur correspondant (UID) et en contexte de liste, une liste avec toutes les données de l'enregistrement. Si le nom d'utilisateur n'a pas été trouvé, undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my @Liste = getpwnam("uucp"); print "$Liste[0] $Liste[1] $Liste[2] $Liste[3] $Liste[4] $Liste[5] $Liste[6] $Liste[7] $Liste[8]\n"; my $valeur = getpwnam("uucp"); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple recherche pour le nom d'utilisateur uucp
, qui est transmis à la fonction getpwbynam
, l'élément correspondant - d'abord dans un contexte de liste, et lors du deuxième appel dans un contexte scalaire. Dans le contexte de liste, les neuf éléments de l'enregistrement sont recherchés et sauvegardés dans la liste @Liste
, dans le contexte scalaire, seul le numéro d'utilisateur (UID) est recherché puis sauvegardé dans la scalaire $valeur
. L'exemple sort les résultats des deux appels pour le contrôle. Pour la signification des éléments de la liste, voir la fonction getpwent.
Recherche pour un numéro d'utilisateur déterminé (UID) l'enregistrement correspondant dans le fichier /etc/passwd. Recherche en contexte scalaire le nom d'utilisateur ou dans un contexte de liste, une liste jusqu'à neuf éléments.
Attend comme paramètre:
1. le numéro d'utilisateur désiré (UID).
Renvoie en contexte scalaire le nom d'utilisateur correspondant et en contexte de liste, une liste avec toutes les données de l'enregistrement. Si le nom d'utilisateur n'a pas été trouvé, undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my @Liste = getpwuid(2); print "$Liste[0] $Liste[1] $Liste[2] $Liste[3] $Liste[4] $Liste[5] $Liste[6] $Liste[7] $Liste[8]\n"; my $valeur = getpwuid(2); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple recherche pour le numéro d'utilisateur 2
, qui est transmis à la fonction getpwbyuid
, l'élément correspondant - d'abord dans un contexte de liste, et lors du deuxième appel dans un contexte scalaire. Dans le contexte de liste, les neuf éléments de l'enregistrement sont recherchés et sauvegardés dans la liste @Liste
, dans le contexte scalaire, seul le nom d'utilisateur est recherché puis sauvegardé dans la scalaire $valeur
. L'exemple sort les résultats des deux appels pour le contrôle. Pour la signification des éléments de la liste, voir la fonction getpwent.
Recherche le numéro de port d'un service réseau déterminé dans le fichier /etc/services.
Attend comme paramètre:
1. le nom du service du service réseau souhaité,
2. le nom du protocole souhaité.
Renvoie le numéro de port correspondant. si le nom de réseau ou le protocole transmis n'ont pas été trouvés, undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my $valeur = getservbyname("www","tcp"); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple recherche le numéro de port pour le service réseau www
sur le protocole de réseau tcp
. C'est à cela que sert l'appel getservbyname("www","tcp")
, dont la valeur renvoyée est sauvegardée dans la scalaire $valeur
. Pour le contrôle, la valeur est sortie.
Recherche le nom d'un service réseau d'un numéro de port déterminé dans le fichier /etc/services.
Attend comme paramètre:
1. le numéro de port désiré,
2. le nom du protocole désiré.
Renvoie le nom du service réseau correspondant. Si le numéro de port ou le protocole transmis n'ont pas été trouvés, undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my $valeur = getservbyport(80,"tcp"); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple recherche le nom d'un service réseau avec le numéro de port 80
sur le protocole réseau tcp
. C'est à cela que sert l'appel getservbyport(80,"tcp")
, dont la valeur renvoyée est sauvegardée dans la scalaire $valeur
. Pour le contrôle, la valeur est sortie.
Recherche en contexte scalaire l'élément suivant dans le fichier /etc/services ou dans un contexte de liste, une liste avec quatre éléments.
N'attend aucun paramètre.
Renvoie selon le contexte soit l'élément suivant du fichier ou la liste. À la fin du fichier, undef
est renvoyé.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; my @Liste = getservent(); while(@Liste) { print "$Liste[0] $Liste[1] $Liste[2] $Liste[3]\n"; @Liste = getservent(); } print "</pre></body></html>\n"; |
L'exemple montre comment vous pouvez sortir dans le navigateur tous les éléments du fichier /etc/services avec un script CGI. Tout d'abord getservent
est appelé une première fois. La valeur renvoyée est interprétée dans un contexte de liste et sauvegardée dans la liste @Liste
. Aussi longtemps que la liste a un contenu - while(@Liste)
- les quatre éléments de la liste sont sortis et getservent
est appelé pour la prochaine boucle. Les quatre éléments de la liste renvoyés par la fonction sont:
$Liste[0]
= nom du service réseau,
$Liste[1]
= nom d'alias du service réseau,
$Liste[2]
= numéro de port du service réseau,
$Liste[3]
= nom du protocole correspondant
N'attend aucun paramètre.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; setgrent(); my $valeur = getgrent(); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple saute au début du fichier avec setgrent
. Ensuite, il lit l'élément suivant du fichier, en l'occurrence le premier élément avec getgrent. La valeur renvoyée qui est sauvegardée dans la scalaire $valeur
est sortie pour le contrôle.
N'attend aucun paramètre.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; sethostent(); my $valeur = gethostent(); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple saute au début du fichier avec sethostent
. Ensuite, il lit l'élément suivant du fichier, en l'occurrence le premier élément avec gethostent. La valeur renvoyée qui est sauvegardée dans la scalaire $valeur
est sortie pour le contrôle.
N'attend aucun paramètre.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; setnetent(); my $valeur = getnetent(); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple saute au début du fichier avec setnetent
. Ensuite, il lit l'élément suivant du fichier, en l'occurrence le premier élément avec getnetent . La valeur renvoyée qui est sauvegardée dans la scalaire $valeur
est sortie pour le contrôle.
N'attend aucun paramètre.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; setprotoent(); my $valeur = getprotoent(); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple saute au début du fichier avec setprotoent
. Ensuite, il lit l'élément suivant du fichier, en l'occurrence le premier élément avec getprotoent . . La valeur renvoyée qui est sauvegardée dans la scalaire $valeur
est sortie pour le contrôle.
N'attend aucun paramètre.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; setpwent(); my $valeur = getpwent(); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple saute au début du fichier avec setpwent
. Ensuite, il lit l'élément suivant du fichier, en l'occurrence le premier élément avec getpwent. La valeur renvoyée qui est sauvegardée dans la scalaire $valeur
est sortie pour le contrôle.
N'attend aucun paramètre.
#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n"; print "<html><head><title>Sortie du test</title></head><body><pre>\n"; setservent(); my $valeur = getservent(); print "$valeur\n"; print "</pre></body></html>\n"; |
L'exemple saute au début du fichier avec setservent
. Ensuite, il lit l'élément suivant du fichier, en l'occurrence le premier élément avec getservent. La valeur renvoyée qui est sauvegardée dans la scalaire $valeur
est sortie pour le contrôle.
Fonctions pour les modules et progiciels (packages) | |
Fonctions pour les appels du système d'exploitation | |
SELFHTML/Aides à la navigation CGI/Perl Fonctions Perl |
© 2001 Stefan Münz / © 2003 Traduction Serge François, 13405@free.fr
selfhtml@fr.selfhtml.org