Rechercher : dans
Par :

Scrpt tcsh problème variable

Dernière réponse le 31 oct 2009 à 19:56:12 geekface, le 30 oct 2009 à 10:34:08 
 Signaler ce message aux modérateurs

Bonjour à tous,

Je m'amuse à faire un petit script, mais je rencontre un petit problème. Voila ce que je veux :

- créer un script "prog" qui lorsqu'il est lancé avec un paramètre le nom d'un utilisateur celui renvoie ceci :

./prog nomlogin

uid : 1890

gid : 568

fullname : Nom Prénom

homedir : /home/nomlogin

shell : /bin/tcsh


voila ce que j'ai fait :

#!/bin/tcsh

grep $1 /etc/passwd

endif

il m'affiche seulement la ligne correspond au nom de login indiqué au prélable en paramètre du fichier /etc/passwd

Moi je veux qu'il affiche en colonne, vous savez avec la commande awk'{print $1 "" $3}', pour afficher les colonnes 1 et 3 du fichier, mais bon voila quoi il ne veut rien savoir même si je met des pipes (|).


Je voudrais après l'exécution de la commande :

./prog jean
ou
./prog "nom d'un utilisateur (ex: root, marcel, pascal ...)"

celle ci m'affiche :

uid : 1890

gid : 568

fullname : dupond jean

homedir : /home/jean

shell : /bin/tcsh

car dans le fichier :

/etc/passwod:

on a :

jean:x:1890:568:dupont jean:/home/jean:/bin/tcsh
marcel:x:1111:564:dupuit marcel:/home/marcel:/bin/bash
autres utilisateurs ...
....
....

si j'avais tapé la commande :

./prog marcel

Alors elle m'aurais affiché :

uid : 1111

gid : 564

fullname : dupuit marcel

homedir : /home/marcel

shell : /bin/bash

Voila ce que j'ai fais :

VERSIONS QUI MARCHE avec uid gid


#!/bin/tcsh

if ($1 == "-help") then

echo "Usage: infouser [-help] username"

echo "Display user information (uid,gid,full name, homedir and common shell)"

else

echo uid:$uid

set uid = "grep $1 /etc/passwd | awk -F : '{print $3}'"

echo gid:$gid

set gid = "grep $1 /etc/passwd | awk -F : '{print $4}'"

endif



VERSIONS QUI MARCHE PLUS :

#!/bin/tcsh

if ($1 == "-help") then

echo "Usage: infouser [-help] username"

echo "Display user information (uid,gid,full name, homedir and common shell)"

else

echo uid:$uid

set uid = "grep $1 /etc/passwd | awk -F : '{print $3}'"

echo gid:$gid

set gid = "grep $1 /etc/passwd | awk -F : '{print $4}'"

echo fullname:$fullname

set fullname = "grep $1 /etc/passwd | awk -F : '{print $5}'"

echo homedir:$homedir

set homedir = "grep $1 /etc/passwd | awk -F : '{print $6}'"

echo shell:$shell

set shell = "grep $1 /etc/passwd | awk -F : '{print $7}'"

endif



Pouvez vous m'aidez MERCI

Configuration: Windows XP pro sp3
Firefox 3.5.4

Meilleures réponses pour « Scrpt tcsh problème variable » dans :
Javascript - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. En Javascript, les noms de variables peuvent être aussi long que l'on désire,...
Variables d'environnement Voir Variables d'environnement Une variable d'environnement est une valeur dynamique, chargée en mémoire, pouvant être utilisée par plusieurs processus fonctionnant simultanément. Sur la plupart des systèmes d'exploitation, les emplacement de...
PHP - Les variables Voir Concept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...
[Bash] La variable d'environnement PATH VoirLa variable d'environnement PATH I. Préambule II. C'est quoi le shell ? III. Définition IV. Séance de dissection V. Ajouter un répertoire à la variable PATH VI. Et puis... I. Préambule Sous les systèmes GNU/Linux qu'on le veuille ou...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Comment récupérer le résultat d'une commande dans une variable VoirComment récupérer le résultat d'une commande dans une variable Préambule Syntaxe Exemples Préambule Il est bien souvent nécessaire de récupérer le résultat d'une commande (ou de son code retour) dans une variable afin de pouvoir...
PHP - Les variables d'environnement VoirNotion de variable d'environnement Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du script...
Langage C - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans...
Java: les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage Java sont typées, c'est-à-dire que les données contenues dans...

1

jipicy, le 30 oct 2009 à 11:11:09

Salut,

Juste un truc, mets les "echo $uid $gid $fulname etc." après leur déclaration et non pas avant ;-(
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

2

geekface, le 30 oct 2009 à 11:12:59

J'ai essayer ça ne change rien, d'autre supposition

Merci

Répondre à geekface

3

dubcek, le 30 oct 2009 à 12:35:26

Hello

$ cat prog
#!/bin/bash

test -z "$1" && { echo "Usage: $0 <nom>" ; exit ; }
awk -F: '/'"$1"'/ {printf("uid: %s\ngid: %s\nfullname: %s\nhomedir: %s\nshell: %s\n",$3,$4, $5, $6,$7)}' </etc/passwd
$ 
$ ./prog root
uid: 0
gid: 0
fullname: root
homedir: /root
shell: /bin/bash
$ 
$ ./prog 
Usage: ./prog <nom>

Répondre à dubcek

4

hamix5, le 30 oct 2009 à 19:11:57

Ok c'est cool merci.

Mais j'insiste sur mon script en tcsh pouvez vous le corriger en restant dans le même état d'esprit. Merci infiniment.

A bientôt

Répondre à hamix5

5

dubcek, le 31 oct 2009 à 09:50:26

Et comme ça:

host:~/tcsh> cat prog
#!/bin/tcsh

if ($1 == "-help") then

echo "Usage: infouser [-help] username"
echo "Display user information (uid,gid,full name, homedir and common shell)"

else

set uid = `grep $1 /etc/passwd | awk -F : '{print $3}'`
echo uid:$uid

set gid = `grep $1 /etc/passwd | awk -F : '{print $4}'`
echo gid:$gid

set fullname = `grep $1 /etc/passwd | awk -F : '{print $5}'`
echo fullname:$fullname

set homedir = `grep $1 /etc/passwd | awk -F : '{print $6}'`
echo homedir:$homedir

set shell = `grep $1 /etc/passwd | awk -F : '{print $7}'`
echo shell:$shell

endif

host:~/tcsh> ./prog -help
Usage: infouser [-help] username
Display user information (uid,gid,full name, homedir and common shell)

host:~/tcsh> ./prog root
uid:0
gid:0
fullname:root
homedir:/root
shell:/bin/bash 

Répondre à dubcek

6

 geekface, le 31 oct 2009 à 19:56:12

WHAOOOOOOOOO, c'est super franchement merci beaucoup, syntaxe pourrie sur tcsh, mais bon fallait y penser avec les ``````````.

Merci infiniment.

Répondre à geekface
Collection CommentÇaMarche.net