(Terug) naar scripts op heeck.nl of heeck.nl

******************************************************************************************
kill-idle-smb

Windows 10 blijkt wat slordig in het opruimen van z'n SMB connecties en dat zit mijn idleshutdown script soms in de weg. Als ik vanaf een Windows machine mijn nas heb benaderd, als netwerkschijf, en ik sluit de Windows machine weer af dan blijft het SMB proces zichtbaar in smbstatus. Als gevolg hiervan gaat de nas niet down wat wel de bedoeling is als 'ie meer dan een uur niet gebruikt is.

Dit scriptje, wat elke vijf minuten uit de crontab van root wordt opgestart, kijkt van alle bekende SMB processen of de client nog valt te pingen en, stopt het betreffende SMB proces als er na een minuut nog geen ping terugkomt.

Oh ja: Mijn thuisnetwerkje is IPv4 only, of dit met IPv6 werkt weet ik dus niet.
01 #!/bin/bash
02 #
03 # detects and kills smb sessions for which the client isn't active anymore.
04 # needs to run as root for smbstatus & killing processes
05 #
06 
07 if [ "$EUID" -ne 0 ]
08   then echo "Please run as root"
09   exit
10 fi
11 
12 # Get session pids from smbstatus
13 for clientpid in `smbstatus -b | cut -f1 -d" "|tail +5| grep -v ^$|sort -u`
14 do 
15 	clientip=`smbstatus | grep $clientpid | head -1|cut -f1 -d"("|cut -c35-50`
16 	unreachable=`ping -c1 -q $clientip | grep "error" |wc -l`
17 	# $unreachable > 0 means no ping came back, 5 pings with 10sec  sleep to be sure
18 	while [[ $unreachable -gt 0 && i -le 5 ]]
19 		do
20 		sleep 10
21 		unreachable=`ping -c1 -q $clientip | grep "error"|wc -l`
22 		((i=i+1))
23 	done
24 	if [[ $unreachable -gt 0 ]]
25 	then
26 		#Client is unreachable, kill this smb process
27 		kill $clientpid
28 	fi
29 done
Als je last hebt van de regelnummers in deze pagina geef je hem maar aan je systeembeheerder :-)
18-02-2023
* Begin **********************************************************************************