Forum Linux.redhat Historique commun multi session

Posté par  . Licence CC By‑SA.
0
12
nov.
2015

Bonjour tout le monde,

Tout est un peu dans le titre, je souhaiterai mutualisé l'ensemble des historiques multi sessions. J'ai remarqué que suivant la session qu'on utilise, une fois en root si on lance la commande history on a pas forcément toutes les commandes de tout ce qui s'est passé avant.
Alors est-il possible de mutualiser cet historique et éventuellement d'avoir l'heure et la date à laquelle la commande a été lancée.

Si ce n'est pas clair, n'hésitez pas à demander des précisions.

Cordialement,

  • # si si

    Posté par  . Évalué à 2.

    c'est mutualisé, mais ce n'est pas simultanée

    ainsi tu ouvres une session, tu tapes la commande ABCD
    tu ouvres une 2e session, tu demandes l'historique, tu ne vois pas ABCD

    par contre, tu ouvres une session, tu tapes ABCD, tu fermes la session,
    tu ouvres une autre session, tu demandes l'historique, tu verras ABCD

    • [^] # Re: si si

      Posté par  . Évalué à 1.

      Et du coup, est-ce possible de synchronisé ça ? On est plusieurs à bosser sur les serveurs, donc les terminaux sont en gros constamment ouvert.
      Si jamais c'est infaisable (ou faisable), est-ce qu'on peut ajouter l'heure/date des commandes ?

      • [^] # Re: si si

        Posté par  . Évalué à 2. Dernière modification le 12 novembre 2015 à 19:13.

        En recherchant sur le net, j'ai trouvé cette page :

        http://blog.iterate.no/2015/06/18/distributed-eternal-bash-history/

        En résumé la commande history recherche d'abord en mémoire, puis dans un fichier, et donc le terminal 2 ne pourra pas voir ce qu'il y a dans la mémoire de terminal 1 sur la même machine.

        Avec une astuce si j'ai bien compris une suite de commande permet à chaque fin de commande de vider la mémoire dans le fichier au ré affichage du prompt. Et donc le fichier sera accessible aux terminaux 1 et 2.

        PROMPT_COMMAND="history -a; history -c; history -r; ${PROMPT_COMMAND}"

        Les explication en anglais :
        history -a “Append history list to history file”
        history -c “Clear history list from session”
        history -r “Read from history file and append the contents to history list”

        Et pour plusieurs machines c'est le même principe, sauf que le fichier histfile se trouve partagé.

        Je fais le résumé de ce que j'ai compris mais je ne saurai probablement pas le mettre en œuvre surtout pour plusieurs machines

        • [^] # Re: si si

          Posté par  . Évalué à 3. Dernière modification le 12 novembre 2015 à 19:27.

          Et pour la date il faut coller cette ligne dans le fichier .bash_profile pour avoir la date et l'heure des commande avec la commande history

          export HISTTIMEFORMAT="%T %d-%b-%Y "

          Après la variable PATH c'est expliqué ici :

          http://www.geekpills.com/operating-system/linux/display-date-time-for-linux-commands-bash-history/1675/

          Ne pas oublier de lancer la commande : source bash_profile
          ou fermer/réouvrir la session sinon ça ne marche pas.

          • [^] # Re: si si

            Posté par  . Évalué à 1.

            J'avais trouvé pour l'heure en attendant, mais merci bien !
            Le cas de la synchro me semble un peu plus délicat, il faudrait en gros une sorte de logout "transparent" puis login de temps en temps sur les sessions en cours pour que toutes les commandes soient indexées, mais cela me parait un peu bizarre ! Je creuse encore..

            • [^] # Re: si si

              Posté par  . Évalué à 1.

              Oui c'est ça qui est problématique si j'ai bien compris c'est via un hébergeur Dropbox, donc à chaque commande, il faudra que bash se connecte a dropbox pour y enregistrer son fichier ça risque à laguer pas mal pour réafficher le prompt, un peu moins si c'est en réseau local

              C'est plus simple sur une seule machine entre les différent utilisateurs et root, un seul fichier super .bash_history, via le réglage dans .bash_profile de chacun des utilisateurs et de root.

              export HISTFILE=/où-est-le fichier-commun/.bash_history
              PROMPT_COMMAND="history -a; history -c; history -r; ${PROMPT_COMMAND}"

              Pour visionner ce qu'a fait serveur1 sur serveur2 il suffira de créer un utilisateur lambda sur le serveur2 sans modifier son .bash_profile et de copier coller le fichier .bash_history du serveur 1 dans /home/lambda puis d'ouvrir une session pour l'utilisateur lambda.

              Il y a surement moyen de faire mieux mais je suis bien au-delà de mes compétences.

    • [^] # Re: si si

      Posté par  . Évalué à 2.

      Si tu fais "history -w" dans une session puis "history -r" dans l'autre session alors tu resynchronises tes historique (Avec le même user bien entendu).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.