Exercice en shell - Page 2

Résolu
  1. 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
    1. Modérateur
      essaie
       for i in $(who | cut -d" " -f1 | uniq);do echo -e "$i\n";ps U $i;done
      0
      1. 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
        1. Modérateur
          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
          1. 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
            1. 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
              1. Modérateur
                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
                1. 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
                  1. Modérateur
                    consulte man ps sur ton système
                    0
                    1. 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
                      1. Modérateur
                        Voir là
                        grep "$USER" /etc/passwd | cut -d: -f5
                        ;-))
                        0
                    2. Modérateur
                      affiche
                      cat /etc/passwd
                      0
                      1. 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
                        1. 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
                          1. au fait, pourquoi je devais faire cela ?

                            a+
                            0
                            1. 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
                              1. Modérateur
                                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
                            2. Modérateur
                              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
                              1. 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
                                1. Modérateur
                                  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
                                  Précédent
                                  • 1
                                  • 2
                                  • 3