Newsgroup: it.comp.os.linux.iniziare
Titolo: Script bash - Last

Ciao a tutti,
vi chiedo cortesemente un aiuto nel sistemare questo script :
 
#!/bin/bash
last | awk '{print $3}' | sort | uniq -c
 
Questo script mi restiutisce gli indirizzi ip degli utenti che hanno 
avuto accesso alla macchina.
Vorrei che però vengano restituiti gli hostname.
Come devo fare?
Mi potete aiutare?
Grazie


Credo sia alquanto difficile perché più programmi vanno a scrivere in 
wtmp e non rutti rispettano la convenzione
 
con la versione di last che c'è sulla Slackware si ottengono i migliori 
risultati con:
last -a -d | awk '(NF == 10) {print $10}' | sort | uniq -c
 
Attenzione però che a seconda del formato della data potrebbe essere 
necessario cambiare il nimeo dei fields da prendere in considerazione 
(NF) o in outpit da awk
 
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

 last -a -d | awk '(NF == 10) {print $10}' | sort | uniq -c
 
Grazie.
Ma credo di essermi spiegato male.
Io ho bisogno che mi venga restituito il nome macchina(hostname).
Io pensavo di ridirigere su nslookup o nmap, ma non riesco a farlo.


il comando è host
 
host 8.8.8.8
restituisce
8.8.8.8.in-addr.arpa domain name pointer 
google-public-dns-a.google.com
.
 
 
Anche il comando dig potrebbe andare bene.
 


$ man last
 
La funzione dell'opzione '-d' è appunto quella di restituire l'host-name 
ricavandolo dall'IP.  L'opzione '-a' serve per spostare il campo 
host-name come ultimo per cui viene stampato senza essere troncato.
 
$ last -adf ./wtmp |awk ' (NF == 10) {print $10}' |sort |uniq -c
      70 0.0.0.0
      15 103.43.94.30
       4 192.168.217.193
      93 192.168.217.194
       5 192.168.217.195
       3 
195-154-200-47.rev.poneytelecom.eu
 
       3 
62-210-132-6.rev.poneytelecom.eu
 
       4 
62-210-207-107.rev.poneytelecom.eu
 
       2 78.129.234.32
       1 
ajax.dewahost.net
 
       1 
host116-131-dynamic.9-87-r.retail.telecomitalia.it
 
     113 
marina.home.net.it
 
      12 
milena.home.net.it
 
 
Se per alcuni IP non appare l'host-name è perché non è possibile la 
traduzione IP => host name (host locali con IP dinamico).  Puoi provare 
a togliere -d per ottenere l'host name memorizzato nel file ma non c'è 
garanzia che sia presente.
 
$ last -af ./wtmp |awk ' (NF == 10) {print $10}' |sort |uniq -c
      15 103.43.94.30
       3 
195-154-200-47.rev.poneytelecom.eu
 
       1 208.100.26.229
       3 
62-210-132-6.rev.poneytelecom.eu
 
       4 
62-210-207-107.rev.poneytelecom.eu
 
       2 78.129.234.32
       1 
host116-131-dynamic.9-87-r.retail.telecomitalia.it
 
     113 
marina.home.net.it
 
      12 
milena.home.net.it
 
      93 
millie.home.net.it
 
       5 
minnie.home.net.it
 
       4 
monica.home.net.it
 
 
Nell'esempio vi sono host che si collegano via ftp da internet ma che 
non hanno host name per cui appare solo IP.  Dove appare 0.0.0.0 nel 
primo esempio indica connessioni locali da console.  Nel secondo esempio 
non appaiono perché nel file il campo è vuoto e l'entry viene eliminata 


 garanzia che sia presente.
 
Credo che il problema sia proprio nella traduzione Ip => host name.