Kategorie: HOWTOS 

    (Einträge gesamt: 9)     Seiten (9) [ «   2 3 4 5 6   » ]
Δ  

Verbundene NFS-Clients und wer ist eigeloggt

     28.11.2014 [13:06]  (Matthias Nitzschke)

Die home-Verzeichnisse meiner User liegen auf einem Server und werden per NFS auf den Client gemounted.
Immer wieder brauche ich es, "welcher Client ist gerade per NFS verbunden, aktiv und wer ist dort eingeloggt".

Im Netz habe ich nichts gefunden, was wirklich hilfreich war, also habe ich mir ein Script geschrieben, dass mir die Aufgabe erfüllt.

Voraussetzungen:

  1. Alle Clients sind in der /etc/hosts-Datei eingetragen
  2. nmap ist installiert
  3. ssh funktioniert über einen rsa-Key ohne Passwortabfrage

Code 14

#!/bin/bash
 
#
#    maybe you run this script as root because of nmap-restrictions
#
#    be sure that all clients are registered in hosts-file and
#    that your ssh login for SSHUSER is regfistered by rsa key
#
#    nmap must be installed
#
#    find clients using an nfs-port
#    matthias nitzschke (sysop) 27.11.2014
#
#
 
# german version of netstat gives VERBUNDEN as connected
 
if [ "$LANG" = 'de_AT.UTF-8' ]
then
    GREPTXT="VERBUNDEN"
 
else
    GREPTXT="ESTABLISHED"
fi
 
#
# using IP for NFS-Server
SERVERIP="192.168.67.1"
 
#
#using directory temp for storing result txt-files
TEMPDIR="/temp"
 
#
# using user root for ssh login
SSHUSER="root"
 
if [ -e $TEMPDIR/who_client.txt ]
then
        rm $TEMPDIR/who_client.txt
fi
 
if [ -e $TEMPDIR/client_login.txt ]
then
        rm $TEMPDIR/client_login.txt
fi
 
if [ -e $TEMPDIR/nfsport ]
then
        rm $TEMPDIR/nfsport
fi                
 
if [ -e $TEMPDIR/online_ips ]
then
        rm $TEMPDIR/online_ips
fi
 
# find server nfs-port (normaly it is 2049)
nmap $SERVERIP|grep 'nfs'|cut -d"/" -f1 > /temp/nfsport
 
#
# find clients using server nfs-port
#
netstat -unta|grep ':'`cat $TEMPDIR/nfsport`|grep $GREPTXT|cut -c45-60|cut -d":" -f1 > $TEMPDIR/online_ips
 
#
#  read client-name from hosts-file
#
 
for i in $(cat $TEMPDIR/online_ips); do
 
    F=`grep $i /etc/hosts`
 
    if [ -z "$F" ]
    then
        echo "$i:unknown_host" >> $TEMPDIR/who_client.txt
    else
         echo $i:`ssh $SSHUSER@$i "who"` >> $TEMPDIR/who_client.txt                               
    fi
 
done;
 
#
cut -d" " -f1 $TEMPDIR/who_client.txt >> $TEMPDIR/client_login.txt
 
chmod 666 $TEMPDIR/nfsport
chmod 666 $TEMPDIR/online_ips
chmod 666 $TEMPDIR/who_client.txt
chmod 666 $TEMPDIR/client_login.txt
 
cat $TEMPDIR/client_login.txt
 
 
 

Das Ergebnis sieht bei mir nun so aus:


Code 15

 
 
192.168.67.32:user1
192.168.67.24:user12
192.168.67.33:user7
192.168.67.27:user3
192.168.67.23:user17
192.168.67.25:test01
192.168.67.52:unknown_host
192.168.67.28:user33
192.168.67.34:user22
 
 


Der unknown_host ist ein Rechner, der NICHT in der Hosts-Datei steht

Es werden 4 Dateien generiert, in denen verschiedene Informationen stehen.

nfsport: Hier steht der NFS-Port den nmap herausgefunden hat
online_ips: Alle gefundenen IP-Adressen, die per NFS verbunden sind (deren Verbindung auf ESTABLISHED lautet)
who_client.txt: Enthällt eine who Abfrage auf den hosts
client_login.txt: Ist die Datei mit dem oben gelisteten Inhalt, also IP und wer ist eingeloggt.


Details und Downloads >>>
Suchen
id-switcher
    (Einträge gesamt: 9)     Seiten (9) [ «   2 3 4 5 6   » ]
Δ    
Script-Laufzeit: 0.036104 Sek.     gelesene Files: 6     SQL-Laufzeit: 0.033921 Sek.    Gesamtbesuche :7.607   Heute :1.936  5.6.30-nmm1