Exercice en shell

Résolu/Fermé
yacine - 11 mai 2007 à 12:46
makoko Messages postés 53 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 25 novembre 2012 - 12 févr. 2008 à 03:32
l'exo en script bash consiste à lire à partir d'un argument $1 qui sera le fichier , et à en déduire les permissions du propriétaire du groupe et des autres (o)de telle sorte avec en sortie par exemple cette forme là :

read write execute

user moi oui oui oui
group le groupe oui non non
others les autres oui non non

je débute alors j'ai du mal , voici ce que j'ai fait pour la partie la plus importante du script

!#/bin/bash
i=2 ( i compteur )
while ($i -lt 9 ) ( on part de 2 car le 1 er caractere sera le type ex -rwxrw-r--)
if ( cut -c$i | ls -l $1 == [a-z]
echo"oui"
else
echo "non"
fi
i=i+1
done


merci pour votre aide
A voir également:

48 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 févr. 2008 à 07:36
0
makoko Messages postés 53 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 25 novembre 2012
9 févr. 2008 à 11:06
salut!

Mais je le voudrais sans, sed et awk!

Peux-tu donner un coup de main ?

j'essaye de comprendre, ceux des scripts que toi et jipi,ont proposé, pour tenter de les modifier.

merci tout de même

a+
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 févr. 2008 à 11:21
essaie
 for i in $(who | cut -d" " -f1 | uniq);do echo -e "$i\n";ps U $i;done
0
makoko Messages postés 53 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 25 novembre 2012
9 févr. 2008 à 12:31
salut!

alors, je pense que c'est quelque comme cela en effet,mais pour le moment, voici que ce j'obtiens : dernier script:

for i in $(who | cut -d" " -f1 | uniq);do echo -e "$i\n";ps U $i;done
------------------------------------
toi

PID TTY STAT TIME COMMAND
14926 ? S 0:00 sshd: toi@pts/2
14927 pts/2 Ss+ 0:00 -bash
moi

PID TTY STAT TIME COMMAND
14956 ? S 0:00 sshd: moi@pts/3
14957 pts/3 Ss 0:00 -bash
15080 pts/3 S+ 0:00 sh jou
15086 pts/3 R+ 0:00 ps U moi


OBSERVATION :
J'aurais voulu, uniquement mes applis (CMD), sans mon login (moi), mais avec mon nom réel affiché en haut, à le place de moi ou toi.

MODIFICATION : Serait-il possible de descendre le nom réel deux lignes en dessus, pour que l'affichage ressemble à cela:

nono
PID TTY TIME CMD
31799 pts/3 00:00:00 vim
31866 pts/3 00:00:00 vim
2495 pts/7 00:00:00 vim
8368 pts/0 00:00:00 vim
9544 pts/2 00:00:00 ps


j'avais essayé ceci avant : echo -e " $USER\n"; ps # évidemment, je n'avais pas mis WHO, donc il n'y avait que, moi.

moi

PID TTY TIME CMD
9339 pts/1 00:00:00 bash
9966 pts/1 00:00:00 ps



dans le lien que tu m'a envoyé, j'ai essayé de modifier ton script, voici ce que j'obtiens:

ps -o pid,tty,time,comm -U lami20j > echo $USER; ps -o pid, tty, time, comm # > : pour 'modifier en'

résultat:

moi
PID TT TIME COMMAND
14957 pts/3 00:00:00 bash
15125 pts/3 00:00:00 ps


REM. : c'est déjà mieux pour la structure de présentation (moi,juste au dessus), mais problèmes :

1. moi, nom de login
2. pourquoi il affiche TT et non TTY
3. si on pouvait aligner PID à gauche sans décaler trop les autres headers, ce serait bien.

merci pour ton aide

la recherche continue

a+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 févr. 2008 à 12:38
et ça?
for i in $(who | cut -d" " -f1 | uniq);do echo -e "$i\n";ps -o pid,tty,time,comm -U $i;done
0
makoko Messages postés 53 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 25 novembre 2012
9 févr. 2008 à 12:46
si j'enlève dans ce script :
for i in $(who | cut -d" " -f1 | uniq);do echo -e "$i\n";ps U $i;done , le saut ligne, moi, descend :ok
cependant, j'ai toujours, bien sûr :

1.mon login
2.STAT
3. mon login (dernière au moins: U moi), mais je ne l'ai pas pour toi, juste son login, à la 2è ligne

Question : est-ce normal, d'avoir plus que la CMD?

a) 2è ligne pour moi
b ) 2è ligne pour toi

moi
PID TTY STAT TIME COMMAND
15144 ? S 0:00 sshd: moi@pts/1
15145 pts/1 Ss 0:00 -bash
15251 pts/1 S+ 0:00 sh for
15256 pts/1 R+ 0:00 ps U moi
toi
PID TTY STAT TIME COMMAND
15174 ? S 0:00 sshd: toi@pts/2
15175 pts/2 Ss+ 0:00 -bash


La recherche continue

a+
0
makoko Messages postés 53 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 25 novembre 2012
9 févr. 2008 à 12:54
nickel ! en enlevant le saut de ligne, mais toujours :

1. TT au lieu de TTY
2. PID pas assez à droite,mais bon, je peux laisser tomber cela.

moi
PID TT TIME COMMAND
15144 ? 00:00:00 sshd
15145 pts/1 00:00:00 bash
15302 pts/1 00:00:00 sh
15307 pts/1 00:00:00 ps
toi
PID TT TIME COMMAND
15174 ? 00:00:00 sshd
15175 pts/2 00:00:00 bash
15299 pts/2 00:00:00 more

REM. : peut-être un peu plus d'espace entre les connectés ( 1 ou 2 lignes), mais bon, je peux laisser aussi tomber.

la recherche continue au moins pour TTY

merci

A tout à l'heure
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 févr. 2008 à 13:06
voilà pour TTY (tname au lieu de tt)
for i in $(who | cut -d" " -f1 | uniq);do echo -e "$i\n";ps -opid,tname,time,comm -U $i;done
0
makoko Messages postés 53 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 25 novembre 2012
9 févr. 2008 à 13:12
et bien sûr, mon login est toujours là, et non mon nom réel ! SAT a disparu, ouf!

et j'ajoute pour ta gloire! l'alignement en sortie est nickel, ce que ne reflète pas ma capture d'écran : voici le vrai alignement à l'écran, en sortie:

moi
PID TT TIME COMMAND
15144 ? 00:00:00 sshd
15145 pts/1 00:00:00 bash
15302 pts/1 00:00:00 sh
15307 pts/1 00:00:00 ps
toi
PID TT TIME COMMAND
15174 ? 00:00:00 sshd
15175 pts/2 00:00:00 bash
15299 pts/2 00:00:00 more

la recherche continue

a+
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 févr. 2008 à 13:15
consulte man ps sur ton système
0
makoko Messages postés 53 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 25 novembre 2012
9 févr. 2008 à 13:20
nickel pour TTY !

Mais comme une épine dans le pied, il reste mon login, au lieu de mon nom réel !

capture écran :


moi
PID TTY TIME COMMAND
15144 ? 00:00:00 sshd
15145 pts/1 00:00:00 bash
15302 pts/1 00:00:00 sh
15307 pts/1 00:00:00 ps
toi
PID TTY TIME COMMAND
15174 ? 00:00:00 sshd
15175 pts/2 00:00:00 bash
15299 pts/2 00:00:00 more

merci

a+
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 févr. 2008 à 13:39
Voir là
grep "$USER" /etc/passwd | cut -d: -f5
;-))
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 févr. 2008 à 13:24
affiche
cat /etc/passwd
0
makoko Messages postés 53 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 25 novembre 2012
9 févr. 2008 à 13:29
j'étais justement là-dessus, pour essayer de comprendre, comment résoudre ce problème de nom réel et login.

question : en mode asp, comment faire pour copier en local, man ps, par ex.

merci d'avance

a+
0
makoko Messages postés 53 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 25 novembre 2012
9 févr. 2008 à 13:34
je vois beaucoup de monde! c'est une formation en ligne ...

Mais il n'y a que moi, de connecté, en ce moment (w)

a+
0
makoko Messages postés 53 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 25 novembre 2012
9 févr. 2008 à 13:35
au fait, pourquoi je devais faire cela ?

a+
0
makoko Messages postés 53 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 25 novembre 2012
9 févr. 2008 à 13:57
en fait, il faudrait pouvoir extraire mon nom de la sortie de la cmd: grep $USER < /etc/passwd :

moi:x:1553:100:Mon nom:/home/moi:/bin/bash

ou même de finger :moi Mon nom pts/1 Feb 9 11:05

je pensais à cut, mais il y a déjà un cut: mettre un 2è demande réflexion!

a+
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 févr. 2008 à 14:00
Voir post #39

Sinon tu peux aussi :
finger -sp $USER | tail -1 | tr -s "[ ]*" ":" | cut -d: -f2
Mais c'est plus tordu ;-))

Édit : Oups ;-((
finger -sp $USER | tail -1 | tr -s "[ ]" ":" | cut -d: -f2
;-))
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 févr. 2008 à 14:09
comme ça?!
for i in $(grep "$(who | cut -d' ' -f1)" /etc/passwd);do echo -e "$i\n" | cut -d':' -f5;ps -opid,tname,time,comm -U ${i%%:*};done
0
makoko Messages postés 53 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 25 novembre 2012
9 févr. 2008 à 14:54
lami, ton script

résultat, extrait: et cela après chaque connecté, prénom affiché seulement.

Donald

PID TTY TIME COMMAND
15762 ? 00:00:00 sshd
15763 pts/4 00:00:00 bash
15786 pts/4 00:00:00 sqlplus
15787 ? 00:00:04 oracle


ERROR: User name does not exist.
********* simple selection ********* ********* selection by list *********
-A all processes -C by command name
-N negate selection -G by real group ID (supports names)
-a all w/ tty except session leaders -U by real user ID (supports names)
-d all except session leaders -g by session OR by effective group name
-e all processes -p by process ID
T all processes on this terminal -s processes in the sessions given
a all w/ tty, including other users -t by tty
g OBSOLETE -- DO NOT USE -u by effective user ID (supports names)
r only running processes U processes for specified users
x processes w/o controlling ttys t by tty
*********** output format ********** *********** long options ***********
-o,o user-defined -f full --Group --User --pid --cols --ppid
-j,j job control s signal --group --user --sid --rows --info
-O,O preloaded -o v virtual memory --cumulative --format --deselect
-l,l long u user-oriented --sort --tty --forest --version
-F extra full X registers --heading --no-heading --context
********* misc options *********
-V,V show version L list format codes f ASCII art forest
-m,m,-L,-T,H threads S children in sum -y change -l format
-M,Z security data c true command name -c scheduling class
-w,w wide output n numeric WCHAN,UID -H process hierarchy


jipi :

résultat : seulement le prénom est affiché :

prénom (un seul, le mien)

j'essaye de comprendre le message d'erreur et d'en tirer profit


merci de votre contribution

La recherche continue

a+
0
makoko Messages postés 53 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 25 novembre 2012
9 févr. 2008 à 14:56
je regarde post 39.

a+
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 févr. 2008 à 14:57
chez moi fonctionne
ça sera bien si tu montreras aussi les commandes que tu tapes, pour voir s'il n'y a pas une erreur quelque part
0