 |
(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 **********************************************************************************
|
|  |