utiliser la commande history avec ssh et obtenir une sortie avec des horodatages

0

En gros, je veux obtenir un enregistrement de toutes les commandes exécutées sur mon serveur ssh, avec leurs temps. Les codes que j'ai essayés sont:

ssh user@ip 'export HISTFILE=~/.bash_history; set -o history; history'

J'ai toutes les commandes, mais je n'ai pas d'horodatage avec ce qui est attendu, je suppose.

Lorsque je me connecte pour la première fois, puis que j'utilise la commande history, j'obtiens tous les détails, y compris la date et l'heure. Je voudrais obtenir tous les détails lorsque j'utilise la commande history avec ssh. Comment dois-je m'y prendre? OH oui, et si possible, j'aimerais obtenir l'historique sans avoir besoin d'exporter HISTFILE. (SI POSSIBLE) L' installation de packages n'est pas une option.

utilisateur1356163
la source
Sans utiliser histfile, ma commande ne donne aucun résultat
user1356163
Vérifiez ici pour la solution. superuser.com/questions/962001/…
Rajasekhar

Réponses:

1

Deux choses:

  1. Vous devez également exporter par exemple

    HISTTIMEFORMAT='%F %T '

    pour définir les heures de l'historique des commandes d'affichage.

  2. Si vous n'avez pas défini la HISTTIMEFORMATvariable d'environnement lors de l'utilisation d'une session, les temps de commande ne seront pas enregistrés et vous ne pourrez bien sûr pas les voir. Par défaut, l'heure actuelle sera imprimée comme heure de commande pour chaque commande dépourvue d'indicateur d'heure.

Si vous consultez le ~/.bash_historyfichier, vous pouvez voir si vous avez activé l'horodatage pour les sessions. Chaque ligne commencera alors par un #suivi de l' heure de la commande suivante.

Daniel Andersson
la source
1180 05/14 / 12-15: 59: 32 # 1336971016 1181 05/14 / 12-15: 59: 32 ssh [email protected] Comment puis-je supprimer la ligne avec # 1336971016. il vient après chaque commande @Daniel Andersson
user1356163
@ ganducoder: Je ne vois pas vraiment la mise en forme dans le champ commentaire. Vous pouvez diriger la sortie vers grep -v "^#"pour supprimer toutes les lignes commençant par un #(si vous souhaitez supprimer une ligne complète). C’est le champ d’horodatage de l’époque, comme je l’ai décrit dans mon message.
Daniel Andersson
0

Si vous connaissez le shell bashet le fichier d'historique comme .bash_historyune simple récupération, cela devrait suffire.

scp user@ip:.bash_history .

Pour les données de temps,

  • Le .bash_historyfichier transportera des informations de temps à partir des données d’historique de toutes les sessions exécutées avec un HISTTIMEFORMATordinateur configuré.
  • Je pense que la mise à jour de l'historique comportera des horodatages pour toute la session contenant une HISTTIMEFORMATconfiguration à tout moment.
  • Ce qui nous amène à une petite contrainte
    • si vous avez le bash profilepour ces connexions d’utilisateur distant avec le
      export HISTTIMEFORMAT='some format', il vous suffit de tirer le .bash_historyfichier.
    • sinon, l'exécution de la commande à distance d'historique, sous quelque forme que ce soit, ne vous donnera pas les données temporelles, simplement parce qu'elles ne sont pas stockées ( .bash_historydans un premier temps); il est perdu à la fin de chaque session et seule la liste de commandes est enregistrée

J'espère que le dernier point clarifie la faisabilité d'obtenir des données de temps.
La bonne nouvelle est que, si vous pouvez voir les données horaires des sessions précédentes lorsque vous vous connectez, elles sont configurées et vous n'avez besoin d'aucun changement. Sinon, il suffit d'insérer le exportdans l' bash profileinstallation - aucune installation requise.

ps: Je suggère que si votre question porte sur la bashcoque, vous l'ajoutez sous forme de tag.

nik
la source
ouais sa focalisée sur bash. Désolé j'ai oublié de l'ajouter
user1356163