Synology DiskStation, Liste per Samba/smb angemeldeter Benutzer

Manchmal möchte man allen Nutzern im Netz die Möglichkeit geben zu sehen, wer im Haus gerade anwesend ist bzw. eine Samba/smb-Verbindung zur DiskStation aufgebaut hat.

Im Folgenden ein Weg, diese Information über einen Webserver auf der DiskStation unter einer Adresse wie http://diskstation.intern/benutzer.php bereitzustellen:

1. Voraussetzung ist die Installation der Pakete WebStation und PHP 7.0.

2. Im Aufgabenplaner ein benutzerdefiniertes Script, welches alle fünf Minuten als root ausgeführt wird, einrichten:

/bin/smbstatus -S |cut -f 3,4 | grep . | sort | uniq | tee /tmp/benutzer-list
date | tee /tmp/benutzer-date

3. Unter /volume1/web/benutzer.php das Ausgabescript ablegen:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
 <meta http-equiv="expires" content="0">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="refresh" content="600;url=/benutzer.php">
 <title>Aktuell angemeldete Benutzer</title>
</head> 
<body text="#00335B" bgcolor="#FFFFFF" link="#F49807" vlink="#F49807" alink="#FFCC33" style="width: 95%; margin-left:auto; margin-right:auto; font-family: Helvetica, Arial, Geneva, sans-serif;">
<table border="0">
<tr>
<td width="90%">
 <h3><b>Aktuell angemeldete Benutzer</b></h3>
</td>
<td align=right><img src="Logo.png"></td>
</tr>
</table>
<?php
echo "<table>";
echo "<tr><th width=\"130\" align=\"left\">User</th><th align=\"left\">Workstation</th></tr>";
$file = '/tmp/benutzer-list';
$file_handle = fopen($file, 'r');
while (!feof($file_handle)) {
 $line = fgets($file_handle);
 $spline = preg_split('/\s+/', $line);
 if (!empty($spline[0])) {
 echo "<tr><td>";
 echo $spline[0];
 echo "</td><td>";
 echo gethostbyaddr($spline[1]);
 echo "</td></tr>";
 }
}
fclose($file_handle);
echo "</table><br>";
echo "Anzahl: ";
echo shell_exec("wc -l < /tmp/benutzer-list");
echo "<br><br>";
echo shell_exec("cat /tmp/benutzer-date");
?>
</body>
</html>

4. In /etc.defaults/samba/smb.conf und /etc/samba/smb.conf diese Zeilen ergänzen und samba neu starten (/usr/syno/etc/rc.sysv/S80samba.sh restart):

socket options=SO_KEEPALIVE TCP_KEEPCNT=4 TCP_KEEPIDLE=240 TCP_KEEPINTVL=15
deadtime=10
keepalive=150

2 Kommentare zu „Synology DiskStation, Liste per Samba/smb angemeldeter Benutzer“

  1. Moin, vielen Dank für diese Info! 🙂

    Ich benötige darüber hinaus ein Protokoll, um nach zu vollziehen, wer wann angemeldet war. So etwas scheint es nicht zu geben. Kann man das auch per Skript lösen? Das wäre ein Traum.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen