Dez 212017
 

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

 Leave a Reply