2011-03-30 4 views
0

Je veux utiliser 'last -t', puis passer la date/heure actuelle au format YYYYMMDDHHMMSS comme demandé. La seule façon de savoir comment obtenir la date/l'heure actuelle est de la "date", mais elle est renvoyée dans le mauvais format que nécessaire.last -t commande AIDE

aussi last-t utilise un laps de temps pour montrer qui s'est connecté depuis le temps, comment je vais soustraire 1 min de l'heure actuelle quand je l'obtenir dans le bon format.

et enfin, y a-t-il une commande qui montre aussi ceux qui se sont déconnectés?

+0

Quel OS êtes-vous? Dans BSD 'last -t' filtres par TTY, mais vous semblez penser que vous avez un' last' qui peut filtrer par le temps. –

+0

@Nick: Un google rapide trouvé ceci: http://unixhelp.ed.ac.uk/CGI/man-cgi?last –

+0

im le tester sur Ubuntu dernière version. et last -t sur ma page de manuel demande le format YYYYMMDDHHMMSS. –

Répondre

0

Regardez la page de manuel date. Vous pouvez afficher la date et l'heure dans toutes sortes de formats, y compris celui que vous voulez. N'oubliez pas de citer l'argument.

Pour soustraire 1 minute, personnellement j'utiliserais Python et le module datetime, il est facile de faire des calculs de temps avec lui.

Je ne connais pas la partie de déconnexion.

+0

ceci est pour une classe nécessitant un script shell pour effectuer cela. ce n'est pas pour une vraie fonctionnalité =/ –

0
1  NOW=`date` 
2  MINAGO=$((-1 + `date -d "$NOW" "+%Y%m%d%H:%M:%S" | cut -d: -f2 `)) 
3  MINAGO=`printf "%02i" $MINAGO` 
4  MINAGO=`date -d "$NOW" "+%Y%m%d%H:%M:%S"| sed s/:.*:/$MINAGO/`  
5  last -t $MINAGO 
  1. temps de magasin NOW
  2. maintenant imprimer comme YYYYMMDDHH: MM: SS et extraire MM, ajouter -1, magasin à Minago
  3. pad
  4. avec des zéros jusqu'à une longueur de 2 (dernière demande -t pour 08 min non 8), magasin à Minago
  5. temps d'impression dès maintenant et remplacer la partie minute avec Minago, magasin à Minago
  6. dernier appel avec YYYYMMDDHHMMSS

Vous devrez être plus précis sur ce que vous voulez dire en montrant ceux qui se sont déconnectés, parce que le dernier vous montre qui s'est déconnecté et quand ils l'ont fait. S'ils ne sont pas encore connectés, ils sont sortis. Que devez-vous savoir de plus? Quoi qu'il en soit, il est possible de rechercher des comptes réels dans/etc/shadow et supprimer de ce que les utilisateurs de la liste qui sont encore connectés par exemple:.

getent shadow |sort -t: -k2,2 | awk -F: '($2 !="*") && ($2 !="!") { print $1 }' 

garder à l'esprit que seul root peut lire/etc/shadow


rayer ce qui précède;

last -t $( 
      date -d @$((-60 + `date +%s`)) +%Y%m%d%H%M%S 
     ) 
| grep still 

par exemple

$ last -t $(date -d @$((-60 + `date +%s`)) +%Y%m%d%H%M%S) | grep still 
* pts/4 * Sat Sep 7 02:20 still logged in 
* pts/44 * Fri Sep 6 19:08 still logged in 
* pts/8 * Fri Sep 6 11:26 still logged in 
* pts/32 * Fri Sep 6 09:37 still logged in 
* pts/60 * Wed Sep 4 08:06 still logged in 
* pts/34 * Tue Sep 3 23:26 still logged in 
* pts/5 * Tue Sep 3 12:38 still logged in 
* pts/37 * Mon Sep 2 10:59 still logged in 
* pts/46 * Sun Sep 1 21:29 still logged in 

+1

L'étape 2 pourrait devenir intéressante si elle arrive à 17:00 (ou à tout autre moment où '% M' donne 0 pour une sortie) ... – twalberg