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:
#!/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:
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.