<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.sachsen.schule/dwiki/index.php?action=history&amp;feed=atom&amp;title=Benutzer%3AKirmse%2FAnmeldekontrolle</id>
	<title>Benutzer:Kirmse/Anmeldekontrolle - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sachsen.schule/dwiki/index.php?action=history&amp;feed=atom&amp;title=Benutzer%3AKirmse%2FAnmeldekontrolle"/>
	<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/Anmeldekontrolle&amp;action=history"/>
	<updated>2026-05-02T15:10:31Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Delixs</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/Anmeldekontrolle&amp;diff=9082&amp;oldid=prev</id>
		<title>Schoffer: kirmse</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/Anmeldekontrolle&amp;diff=9082&amp;oldid=prev"/>
		<updated>2012-03-16T15:47:16Z</updated>

		<summary type="html">&lt;p&gt;kirmse&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 16. März 2012, 17:47 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l692&quot;&gt;Zeile 692:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 692:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;----&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div align=&quot;right&quot;&amp;gt;[[Benutzer:Kirmse]]&amp;lt;/div&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Schoffer</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/Anmeldekontrolle&amp;diff=9057&amp;oldid=prev</id>
		<title>Schoffer: verschob „Kirmse/Anmeldekontrolle“ nach „Benutzer:Kirmse/Anmeldekontrolle“</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/Anmeldekontrolle&amp;diff=9057&amp;oldid=prev"/>
		<updated>2012-03-16T15:42:41Z</updated>

		<summary type="html">&lt;p&gt;verschob „&lt;a href=&quot;/dwiki/index.php/Kirmse/Anmeldekontrolle&quot; class=&quot;mw-redirect&quot; title=&quot;Kirmse/Anmeldekontrolle&quot;&gt;Kirmse/Anmeldekontrolle&lt;/a&gt;“ nach „&lt;a href=&quot;/dwiki/index.php/Benutzer:Kirmse/Anmeldekontrolle&quot; title=&quot;Benutzer:Kirmse/Anmeldekontrolle&quot;&gt;Benutzer:Kirmse/Anmeldekontrolle&lt;/a&gt;“&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 16. März 2012, 17:42 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;de&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(kein Unterschied)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Schoffer</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/Anmeldekontrolle&amp;diff=5659&amp;oldid=prev</id>
		<title>Kirmse: Funktionen des Scripts angegeben</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/Anmeldekontrolle&amp;diff=5659&amp;oldid=prev"/>
		<updated>2008-10-06T07:19:41Z</updated>

		<summary type="html">&lt;p&gt;Funktionen des Scripts angegeben&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 6. Oktober 2008, 09:19 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Bild:Smbstatus2html2.jpg]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Bild:Smbstatus2html2.jpg]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dieses Script ist eine Neuimplementierung von &amp;lt;code&amp;gt;smbstatus2html.cgi&amp;lt;/code&amp;gt; von Rene van Bevern.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dieses Script ist eine Neuimplementierung von &amp;lt;code&amp;gt;smbstatus2html.cgi&amp;lt;/code&amp;gt; von Rene van Bevern&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Es ermittelt zusätzlich, ob es Mehrfachanmeldungen gibt. Mehrfachanmeldungen im gleichen Raum werden (hier) mit kräftiger Hintergrundfarbe hervorgehoben. Mehrfachanmeldungen, wobei die zweite und folgende Anmeldung nicht im gleichen Raum ist, wird per Voreinstellung mit einer blassen Hintergrundfarbe hinterlegt. Vorrang hat Mehrfachanmeldung im gleichen Raum, weil die der Lehrer &quot;auflösen&quot; kann.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Es kann eingestellt werden, ob unbesetzte Rechner angezeigt werden (wie hier im Bild zu sehen) oder nicht. Ebenso kann eingestellt werden, ob Lehreraccounts annonymisiert werden und wenn ja, mit welchen String. Ebenso kann konfiguriert werden, ob der Account als Maillink angezeigt wird oder nicht. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Voraussetzung für die Funktionen ist das Einrichten von festen IPs für alle Rechner (zumindest von diesen Raum)&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kirmse</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/Anmeldekontrolle&amp;diff=5657&amp;oldid=prev</id>
		<title>Kirmse: Screenshot eingefügt</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/Anmeldekontrolle&amp;diff=5657&amp;oldid=prev"/>
		<updated>2008-10-05T17:33:33Z</updated>

		<summary type="html">&lt;p&gt;Screenshot eingefügt&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 5. Oktober 2008, 19:33 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Bild:Smbstatus2html2.jpg]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dieses Script ist eine Neuimplementierung von &amp;lt;code&amp;gt;smbstatus2html.cgi&amp;lt;/code&amp;gt; von Rene van Bevern.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dieses Script ist eine Neuimplementierung von &amp;lt;code&amp;gt;smbstatus2html.cgi&amp;lt;/code&amp;gt; von Rene van Bevern.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kirmse</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/Anmeldekontrolle&amp;diff=5648&amp;oldid=prev</id>
		<title>Kirmse: Quelltext von smbstatus2html</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/Anmeldekontrolle&amp;diff=5648&amp;oldid=prev"/>
		<updated>2008-10-04T19:19:58Z</updated>

		<summary type="html">&lt;p&gt;Quelltext von smbstatus2html&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Dieses Script ist eine Neuimplementierung von &amp;lt;code&amp;gt;smbstatus2html.cgi&amp;lt;/code&amp;gt; von Rene van Bevern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
use warnings;&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
use CGI::Carp qw(fatalsToBrowser);&lt;br /&gt;
use Net::LDAP;&lt;br /&gt;
&lt;br /&gt;
# ========================== Konfigurationsbereich ========================&lt;br /&gt;
&lt;br /&gt;
my %config = (&lt;br /&gt;
# hier wird angegeben, ob fuer Lehrer das Login angezeigt werden soll oder&lt;br /&gt;
# statt dessen ein Ersatzstring (siehe bei UNVISIBLESTRING). Dabei bedeutet&lt;br /&gt;
# no: ausblenden, yes: anzeigen des Lehrerlogins&lt;br /&gt;
TEACHER          =&amp;gt; &amp;#039;yes&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
# geben Sie hier an, fuer welche Accounts, gegebenenfalls zusaetzlich bzw. auch&lt;br /&gt;
# alternativ zu &amp;#039;lehrer&amp;#039;, das Login nicht angezeigt werden soll.&lt;br /&gt;
# Format: UNVISIBLE =&amp;gt; [ &amp;#039;ffeuerstein&amp;#039;, &amp;#039;hkirmse&amp;#039; ];&lt;br /&gt;
UNVISIBLE        =&amp;gt; [ ],&lt;br /&gt;
&lt;br /&gt;
# hier wird angegeben, was in das Feld der Tabelle eingetragen wird, wenn das&lt;br /&gt;
# Login nicht angezeigt werden soll, z.B. fuer den Admin. Es sollte kein leerer&lt;br /&gt;
# String &amp;#039;&amp;#039; eingetragen werden, weil manche Browser dann die Tabellen nicht&lt;br /&gt;
# vollstaendig zeichnen. Dieser String kommt nur im Feld Account zur Wirkung.&lt;br /&gt;
UNVISIBLESTRING  =&amp;gt; &amp;#039;xxxxx&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
# hier wird angegeben, ob nur die Rechner angezeigt werden, die gerade genutzt&lt;br /&gt;
# werden (also die unbenutzten PCs ausgeblendet werden sollen). Dabei bedeutet&lt;br /&gt;
# no: ausblenden, yes: anzeigen der unbenutzten Rechner&lt;br /&gt;
ALL_PC           =&amp;gt; &amp;#039;yes&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
# hier wird angegeben, was in das Feld der Tabelle eingetragen wird, wenn der&lt;br /&gt;
# Rechner nicht besetzt ist. Dieser Parameter hat keine Wirkung, wenn bei&lt;br /&gt;
# ALL_PC =&amp;gt; &amp;#039;no&amp;#039;; eingetragen wird. Es sollte kein leerer String &amp;#039;&amp;#039; eingetragen&lt;br /&gt;
# werden, weil manche Browser dann die Tabellen nicht vollstaendig zeichnen.&lt;br /&gt;
# Dieser String kommt im Feld IP-Adresse und im Feld Account zur Wirkung.&lt;br /&gt;
ALTERNATE_STRING  =&amp;gt; &amp;#039;&amp;amp;nbsp;&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
# An Schulen wo der Mailserver zur Weitergabe von Informationen genutzt wird,&lt;br /&gt;
# kann die Anzeige des Logins als Maillink erfolgen. Dabei bedeutet&lt;br /&gt;
# no: kein Maillink,  yes: mit Maillink&lt;br /&gt;
MAIL_URL          =&amp;gt; &amp;#039;yes&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
# hier wird angegeben, ob nach Mehrfachanmeldungen gesucht werden soll.&lt;br /&gt;
# dabei bedeutet no: nicht suchen, yes: nach Mehrfachanmeldungen suchen&lt;br /&gt;
MULTIPLE_LOGIN    =&amp;gt; &amp;#039;yes&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
# hier wird angegeben, mit welcher Hintergrundfarbe die Zelle fuer Arbeitsplatz&lt;br /&gt;
# bei Mehrfachanmeldungen im Netz erscheinen soll.&lt;br /&gt;
IM_NETZ           =&amp;gt; &amp;#039;#F9DED9&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
# hier wird angegeben, mit welcher Hintergrundfarbe die Zelle fuer Arbeitsplatz&lt;br /&gt;
# bei Mehrfachanmeldungen im Raum erscheinen soll. Falls Mehrfachanmeldungen im&lt;br /&gt;
# Netz und im Raum vorliegen, kommt die Mehrfachanmeldung im Raum zur Wirkung.&lt;br /&gt;
IM_ROOM           =&amp;gt; &amp;#039;#EEA395&amp;#039;,&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# hier können sie das Format fuer das Datum und die Uhrzeit angeben. Die&lt;br /&gt;
# Platzhalter %%tag%%, %%monat%%, %%jahr%%, %%stunde%%, %%minute%%, %%sekunden%%&lt;br /&gt;
# werden durch aktuellen Werte ersetzt, wobei alle Werte der Zeit zweistellig sind&lt;br /&gt;
# durch das vorgegebene Format entsteht z.B. &amp;quot;1.1.2008 13:41:05&amp;quot;&lt;br /&gt;
my $format = &amp;#039;%%tag%%.%%monat%%.%%jahr%% %%stunde%%:%%minute%%:%%sekunden%%&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ========================== Fehlermeldungen in der Tabelle ===============&lt;br /&gt;
&lt;br /&gt;
my $fehler1 = &amp;quot;Es liegen überhaupt keine Anmeldungen am Fileserver vor&amp;quot;;&lt;br /&gt;
my $fehler2 = &amp;quot;Es liegen in diesem Raum keine Anmeldungen am Fileserver vor&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ========================== HTML-Bereich =================================&lt;br /&gt;
&lt;br /&gt;
# Die generierte HTML-Seite wird zusammengesetzt aus dem Kopf, der (eigentlichen)&lt;br /&gt;
# Tabelle und dem Fuss. Hier wird die Variable $head als HERE-Dokument bereitgestellt.&lt;br /&gt;
# Ab der 2. Zeile, die mit: &amp;quot;&amp;lt;!doctype html ...&amp;quot; beginnt, ist alles reines HTML.&lt;br /&gt;
# Sie können damit ohne Perlkenntnisse das Aussehen der Seite beeinflussen.&lt;br /&gt;
# Beachten Sie, dass %%aufrufer%%, &amp;quot;%%rechner%%&amp;quot;, &amp;quot;%%raum%% und %%datum%%  durch&lt;br /&gt;
# das Script durch die aktuellen Werte ersetzt werden&lt;br /&gt;
my $head =&amp;lt;&amp;lt;&amp;#039;KOPF&amp;#039;;&lt;br /&gt;
&amp;lt;!doctype html public &amp;quot;-//W3C//DTD HTML 4.0 //EN&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Anmeldekontrolle&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;quot;author&amp;quot; content=&amp;quot;Hans-Dietrich Kirmse, Rene van Bevern&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
b.info     { color:#C0C0C0; }&lt;br /&gt;
td         { padding-left:5px; }&lt;br /&gt;
table,h1,p { margin-left:5px; }&lt;br /&gt;
//--&amp;gt;&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body background=&amp;quot;/online/whttxtr2.jpg&amp;quot; text=&amp;quot;#000000&amp;quot; bgcolor=&amp;quot;#FFFFFF&amp;quot; link=&amp;quot;#0000FF&amp;quot; alink=&amp;quot;#0000C0&amp;quot; vlink=&amp;quot;#FF0000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; width=&amp;quot;90%&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b class=&amp;quot;info&amp;quot;&amp;gt;%%aufrufer%% am PC &amp;quot;%%rechner%%&amp;quot; im Raum &amp;quot;%%raum%%&amp;quot;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;b class=&amp;quot;info&amp;quot;&amp;gt;%%datum%%&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Folgende Benutzer dieses Raumes sind angemeldet:&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;table width=&amp;quot;90%&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Arbeitsplatz&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;IP-Adresse&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Account&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
KOPF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# die Variable $foot sollte normalerweise nicht geändert werden, da nur Copyrightvermerk.&lt;br /&gt;
# Falls dieser an irgendeiner anderen Stelle erscheint, ist dagegen natürlich nichts einzuwenden.&lt;br /&gt;
my $foot =&amp;lt;&amp;lt;&amp;#039;FUSS&amp;#039;;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;copy; &amp;lt;a href=&amp;quot;mailto:hd.kirmse@gmx.de&amp;quot;&amp;gt;HD. Kirmse&amp;lt;/a&amp;gt;, Ren&amp;amp;eacute; van Bevern, &amp;amp;nbsp; ERG Saalfeld/Thüringen, smbstatus2html Version 0.7 - Dezember 2007&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
FUSS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# wenn keine Anmeldungen am Fileserver vorliegen, dann wird folgende Tabelle&lt;br /&gt;
# zurueckgegeben, der Platzhalter %%fehler%% wird dann ersetzt&lt;br /&gt;
my $error =&amp;lt;&amp;lt;&amp;#039;FEHLER&amp;#039;;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;%%fehler%%&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
FEHLER&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ========================== weitere globalen Variablen ===================&lt;br /&gt;
&lt;br /&gt;
my $ldap_base;                              # wird z.B. zu &amp;#039;dc=erg,c=de&amp;#039;&lt;br /&gt;
my $ip;                                     # IP des Lehrer-PCs&lt;br /&gt;
my $teacher;                                # Login des aufrufenden Lehrers&lt;br /&gt;
my @teacher;                                # die Logins der Lehrer&lt;br /&gt;
my $room;                                   # der Raum&lt;br /&gt;
my %pcs;                                    # die PCs in diesem Raum&lt;br /&gt;
my @output;                                 # die Ausgabe von smbstatus&lt;br /&gt;
my @daten;                                  # Daten von smbstatus&lt;br /&gt;
my %net_connection;                         # Anmeldungen pro User im Netz&lt;br /&gt;
my %room_connection;                        # Anmeldungen pro User im Raum&lt;br /&gt;
my $date;                                   # Datum und Zeit des Aufrufs&lt;br /&gt;
my $table;                                  # die Tabelle der HTML-Seite&lt;br /&gt;
my $ref;                                    # temporaere Variable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ========================== Hauptprogramm ================================&lt;br /&gt;
&lt;br /&gt;
# wir holen uns das Login des Lehrers, von dem das Script aufgerufen wurde&lt;br /&gt;
$teacher = $ENV{REMOTE_USER};&lt;br /&gt;
defined($teacher) or die &amp;quot;es liegt keine Anmeldung am Apache vor, $!\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# wir holen uns die IP des Rechners, von dem das Script aufgerufen wurde&lt;br /&gt;
$ip = $ENV{REMOTE_ADDR};&lt;br /&gt;
defined($ip) or die &amp;quot;ein unerwarteter Fehler ist aufgetreten, $!\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# wir holen uns die Lehrer und den Raum und die Rechner fuer diesen Raum&lt;br /&gt;
($ref, $room, %pcs)  = &amp;amp;get_teachers_and_pcs($ip);         # vom LDAP&lt;br /&gt;
@teacher = @{$ref};&lt;br /&gt;
&lt;br /&gt;
# wir rufen &amp;#039;smbstatus&amp;#039; auf&lt;br /&gt;
@output = `smbstatus`;&lt;br /&gt;
chomp(@output);&lt;br /&gt;
&lt;br /&gt;
# jetzt erzeugen wir die Daten zur Bearbeitung von den aktuell angemeldeten PCs.&lt;br /&gt;
# uns interessieren von @output nur Zeilen, wo am Ende eine Klammer mit der IP ist&lt;br /&gt;
# Die Daten haben folgende Struktur: $daten[x] = \($ip, $login, $gruppe, $rechner);&lt;br /&gt;
@daten = &amp;amp;get_data(@output);&lt;br /&gt;
&lt;br /&gt;
# falls ueberhaupt keine Anmeldungen am Fileserver vorliegen, brechen wir hier ab&lt;br /&gt;
if (scalar @daten == 0) {&lt;br /&gt;
  $error =~ s/%%fehler%%/$fehler1/;&lt;br /&gt;
  $table = $error;&lt;br /&gt;
  goto AUSGABE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# wir ermitteln die Anmeldungen pro User im Netz&lt;br /&gt;
if ($config{MULTIPLE_LOGIN} eq &amp;#039;yes&amp;#039;) {&lt;br /&gt;
  %net_connection = &amp;amp;get_anz_pro_user(@daten);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# wir reduzieren jetzt (anhand der IP) die Daten auf die Anmeldungen im Raum&lt;br /&gt;
@daten = &amp;amp;filtern_nach_raum(\@daten, \%pcs);&lt;br /&gt;
&lt;br /&gt;
# falls keine Anmeldungen am Fileserver in diesem Raum vorliegen, brechen wir ab&lt;br /&gt;
if (scalar @daten == 0) {&lt;br /&gt;
  $error =~ s/%%fehler%%/$fehler2/;&lt;br /&gt;
  $table = $error;&lt;br /&gt;
  goto AUSGABE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# wir ermitteln die Anmeldungen pro User im Raum&lt;br /&gt;
if ($config{MULTIPLE_LOGIN} eq &amp;#039;yes&amp;#039;) {&lt;br /&gt;
  %room_connection = &amp;amp;get_anz_pro_user(@daten);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# wenn die nichtbenutzten PCs dieses Raumes mit aufgelistet werden sollen,&lt;br /&gt;
# dann werden für diese PCs &amp;quot;Pseudo-Datensaetze&amp;quot; bereitgestellt&lt;br /&gt;
if ($config{ALL_PC} eq &amp;#039;yes&amp;#039;) {&lt;br /&gt;
  @daten = &amp;amp;gen_data_for_all_pcs(\%config, \%pcs, @daten);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# wir sortieren die Datensätze nach den Rechnernamen&lt;br /&gt;
@daten = sort { vergleich_rechner($a,$b) } @daten;&lt;br /&gt;
&lt;br /&gt;
# falls die Lehrer nicht angezeigt werden sollen&lt;br /&gt;
# werden jetzt die Logins durch einen Ersatzstring ersetzt&lt;br /&gt;
@daten = &amp;amp;substitute_teacherlogins(\%config, \@teacher, @daten);&lt;br /&gt;
&lt;br /&gt;
# wir bauen jetzt die eigentliche Tabelle zusammen&lt;br /&gt;
# es wird hier nur das HTML herumgestrickt (incl. Mehrfachanmeldung, Maillink)&lt;br /&gt;
$table = &amp;amp;get_table( \@daten, \%config, \%net_connection, \%room_connection );&lt;br /&gt;
&lt;br /&gt;
AUSGABE:&lt;br /&gt;
&lt;br /&gt;
# wir holen uns Datum und Uhrzeit (wird im Kopf der HTML-Seite angezeigt)&lt;br /&gt;
$date = &amp;amp;datum($format);&lt;br /&gt;
&lt;br /&gt;
# wir bearbeiten den Kopf&lt;br /&gt;
$head =~ s/%%aufrufer%%/$teacher/;&lt;br /&gt;
$head =~ s/%%datum%%/$date/;&lt;br /&gt;
$head =~ s/%%rechner%%/$pcs{$ip}/;&lt;br /&gt;
$head =~ s/%%raum%%/$room/;&lt;br /&gt;
&lt;br /&gt;
# wir schicken die Seite zum Apache&lt;br /&gt;
print &amp;quot;Content-type: text/html\n\n&amp;quot;;&lt;br /&gt;
print $head;&lt;br /&gt;
print $table;&lt;br /&gt;
print $foot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ========================== Funktionen ===================================&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
# Funktion: Hilfsfunktion zur Ermittlung der Suchbasis&lt;br /&gt;
# Aufruf:   $ldap_base = &amp;amp;_get_ldapbase;&lt;br /&gt;
# Input:    --&lt;br /&gt;
# Output:   Die Suchbasis des LDAP z.B. &amp;#039;dc=erg,c=de&amp;#039;&lt;br /&gt;
# Update:   13.08.2007&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
sub _get_ldapbase&lt;br /&gt;
{&lt;br /&gt;
  my $ldap_base = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
  # wir durchsuchen die ldap.conf mit einer Regex&lt;br /&gt;
  open DATEI, &amp;#039;&amp;lt;&amp;#039;, &amp;#039;/etc/ldap.conf&amp;#039; or die &amp;quot;konnte ldap.conf nicht oeffnen, $!\n&amp;quot;;&lt;br /&gt;
  while (my $zeile = &amp;lt;DATEI&amp;gt;) {&lt;br /&gt;
    if ($zeile =~ m/^\s*base\s+(\w.*\w)\s*$/) {&lt;br /&gt;
      $ldap_base = $1;&lt;br /&gt;
      last;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  close DATEI;&lt;br /&gt;
&lt;br /&gt;
  return $ldap_base;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
# Funktion: es werden aus dem LDAP zu einer IP der Raum und die Rechner,&lt;br /&gt;
# Aufruf:   (\@teachers,$raum,\%pc)  = &amp;amp;get_teachers_and_pcs($ip);&lt;br /&gt;
# Input:    $ip      = die IP-Adresse des Lehrerrechners&lt;br /&gt;
# Output:   \@logins = Referenz auf Liste der Lehrerlogins&lt;br /&gt;
#           $raum    = Name des Raumes (Rechnergruppierung)&lt;br /&gt;
#           \%pcs    = alle Rechner des Raumes (IP =&amp;gt; Name)&lt;br /&gt;
# Update:   16.12.2007&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
sub get_teachers_and_pcs&lt;br /&gt;
{&lt;br /&gt;
  my $ip = shift;&lt;br /&gt;
&lt;br /&gt;
  my ($ldap_base, $ldap, $mesg, $entry, $dn, $pc, $suchbasis, %rechner,&lt;br /&gt;
      $tmp, $raum, @teacher);&lt;br /&gt;
&lt;br /&gt;
  # wir verbinden uns mit den LDAP&lt;br /&gt;
  $ldap = Net::LDAP-&amp;gt;new(&amp;#039;127.0.0.1&amp;#039;,version =&amp;gt; 3) or die &amp;quot;$@&amp;quot;;&lt;br /&gt;
  $ldap-&amp;gt;bind or die &amp;quot;konnte mich nicht mit dem Server verbinden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  # wir holen uns die Suchbasis&lt;br /&gt;
  $ldap_base = &amp;amp;_get_ldapbase;&lt;br /&gt;
&lt;br /&gt;
  # wir holen uns die Lehrer&lt;br /&gt;
  $mesg = $ldap-&amp;gt;search(&lt;br /&gt;
             base   =&amp;gt; &amp;quot;ou=LEHRER,o=SCHULE,$ldap_base&amp;quot;,&lt;br /&gt;
             filter =&amp;gt; &amp;quot;gidNumber=101&amp;quot;,&lt;br /&gt;
             attrs  =&amp;gt; [ &amp;#039;uid&amp;#039; ],&lt;br /&gt;
             scope  =&amp;gt; &amp;quot;sub&amp;quot;);&lt;br /&gt;
  mesg-&amp;gt;code and die $mesg-&amp;gt;error;&lt;br /&gt;
&lt;br /&gt;
  # wir stecken die Daten aus den Entries in einen &amp;quot;normalen&amp;quot; Hash&lt;br /&gt;
  @teacher = ();&lt;br /&gt;
  foreach my $entry ($mesg-&amp;gt;entries) {&lt;br /&gt;
    push @teacher, $entry-&amp;gt;get_value(&amp;#039;uid&amp;#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # wir holen uns den Raum zu der IP ($ip)&lt;br /&gt;
  $mesg = $ldap-&amp;gt;search(&lt;br /&gt;
             base   =&amp;gt; &amp;quot;cn=DHCP Service Config,o=DHCP,$ldap_base&amp;quot;,&lt;br /&gt;
             filter =&amp;gt; &amp;quot;dhcpStatements=fixed-address $ip&amp;quot;,&lt;br /&gt;
             attrs  =&amp;gt; [ &amp;#039;dhcpHost&amp;#039; ],&lt;br /&gt;
             scope  =&amp;gt; &amp;quot;base&amp;quot;);&lt;br /&gt;
  mesg-&amp;gt;code and die $mesg-&amp;gt;error;&lt;br /&gt;
&lt;br /&gt;
  # wir holen uns den DN&lt;br /&gt;
  ($entry) = $mesg-&amp;gt;entries or die &amp;quot;konnte keinen dhcpHost finden&amp;quot;;&lt;br /&gt;
  $dn    = $entry-&amp;gt;dn;&lt;br /&gt;
&lt;br /&gt;
  # wir spalten vom DN den Rechnernamen ab, den Rest nehmen wir gleich als Suchbasis&lt;br /&gt;
  ($pc, $suchbasis) = $dn =~ /^cn=([^,]*),(.*)$/;&lt;br /&gt;
&lt;br /&gt;
  # wir holen uns die Rechner (sind im DN) und IPs zu diesen Raum&lt;br /&gt;
  $mesg = $ldap-&amp;gt;search(&lt;br /&gt;
             base =&amp;gt; $suchbasis,&lt;br /&gt;
             filter =&amp;gt; &amp;quot;objectClass=dhcpHost&amp;quot;,&lt;br /&gt;
             attrs  =&amp;gt; [ &amp;#039;dhcpStatements&amp;#039; ]);&lt;br /&gt;
  $mesg-&amp;gt;code and die $mesg-&amp;gt;error;&lt;br /&gt;
&lt;br /&gt;
  # wir stecken die Daten aus den Entries in einen &amp;quot;normalen&amp;quot; Hash&lt;br /&gt;
  %rechner = ();&lt;br /&gt;
  foreach my $entry ($mesg-&amp;gt;entries) {&lt;br /&gt;
    $dn   = $entry-&amp;gt;dn;&lt;br /&gt;
    ($pc) = $dn  =~ /^cn=([^,]*),/ ;   # die Klammer ist der Rechnername&lt;br /&gt;
    $tmp  = $entry-&amp;gt;get_value(&amp;#039;dhcpStatements&amp;#039;);&lt;br /&gt;
    ($ip) = $tmp =~ /fixed-address (.*)$/;&lt;br /&gt;
    $rechner{$ip} = $pc;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # wir holen uns noch den Raum&lt;br /&gt;
  ($raum) = $suchbasis =~ /^cn=([^,]*),/ ; # die Klammer ist der Raum&lt;br /&gt;
&lt;br /&gt;
  # wir trennen uns vom LDAP&lt;br /&gt;
  $ldap-&amp;gt;unbind;&lt;br /&gt;
&lt;br /&gt;
  return (\@teacher, $raum, %rechner);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
# Funktion: aus der Ausgabe von smbstatus werden die Daten herausgezogen&lt;br /&gt;
# Aufruf:   @daten    = &amp;amp;get_data(@output);&lt;br /&gt;
# Input:    @output   = die Ausgabe von smbstatus&lt;br /&gt;
# Output:   $daten[x] = \($ip, $login, $gruppe, $rechner);&lt;br /&gt;
# Update:   13.08.2007&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
sub get_data&lt;br /&gt;
{&lt;br /&gt;
  my @output = @_;&lt;br /&gt;
&lt;br /&gt;
  my @daten = ();&lt;br /&gt;
  foreach my $zeile (@output) {&lt;br /&gt;
    if ($zeile =~ /^&lt;br /&gt;
                     \d+\s*                         # die PID&lt;br /&gt;
                    (\w+)\s*                        # der User (login) = $1&lt;br /&gt;
                    (\w+)\s*                        # die Gruppe       = $2&lt;br /&gt;
                    (\w+)\s*                        # der Rechnername  = $3&lt;br /&gt;
                    \((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\)  # die IP = $4&lt;br /&gt;
                  $/x) {&lt;br /&gt;
      my @values = ( $4, $1, $2, $3 );    # wird eine anonyme Liste&lt;br /&gt;
      push @daten, \@values;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return @daten;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
# Funktion: es werden die Anzahl der Anmeldungen pro User ermittelt&lt;br /&gt;
# Aufruf:   %connection = &amp;amp;get_anz_pro_user(@daten);&lt;br /&gt;
# Input:    $daten[x]   = \($ip, $login, $gruppe, $rechner);&lt;br /&gt;
# Output:   $connection{$user} = $anzahl;&lt;br /&gt;
# Update:   16.12.2007&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
sub get_anz_pro_user&lt;br /&gt;
{&lt;br /&gt;
  my @daten = @_;&lt;br /&gt;
&lt;br /&gt;
  my %ip2user = ();&lt;br /&gt;
  foreach my $datum (@daten) {&lt;br /&gt;
     $ip2user{${$datum}[0]} = ${$datum}[1];&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  my (%anzahl_anmeldungen, $user);&lt;br /&gt;
  foreach my $ip (keys %ip2user) {&lt;br /&gt;
    $user = $ip2user{$ip};&lt;br /&gt;
    if (defined($anzahl_anmeldungen{$user})) {&lt;br /&gt;
      $anzahl_anmeldungen{$user}++;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
      $anzahl_anmeldungen{$user} = 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return %anzahl_anmeldungen;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
# Funktion: es werden nur die Datensaetze aus diesem Raum zurueckgegeben&lt;br /&gt;
# Aufruf:   @daten    = &amp;amp;filtern_nach_raum(\@daten, \%pcs);&lt;br /&gt;
# Input:    $daten[x] = \($ip, $login, $gruppe, $rechner);&lt;br /&gt;
#           $pcs{$ip} = $rechnername;&lt;br /&gt;
# Output:   $daten[x] = \($ip, $login, $gruppe, $rechner);&lt;br /&gt;
# Update:   16.12.2007&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
sub filtern_nach_raum&lt;br /&gt;
{&lt;br /&gt;
  my $lref_daten = shift;&lt;br /&gt;
  my $href_pcs   = shift;&lt;br /&gt;
&lt;br /&gt;
  my @daten = @{$lref_daten};&lt;br /&gt;
  my %pcs   = %{$href_pcs};&lt;br /&gt;
&lt;br /&gt;
  my ($ip, @temp);&lt;br /&gt;
&lt;br /&gt;
  foreach my $nr (@daten) {&lt;br /&gt;
    my @liste = @{$nr};&lt;br /&gt;
&lt;br /&gt;
    # wir holen uns die IP&lt;br /&gt;
    $ip = $liste[0];&lt;br /&gt;
&lt;br /&gt;
    # nur wenn diese IP zu den Rechnern des Raumes gehoert&lt;br /&gt;
    if (defined($pcs{$ip})) {&lt;br /&gt;
      # dann wollen wir diesen Datensatz&lt;br /&gt;
      push @temp, \@liste;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return @temp;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
# Funktion: es werden die Logins durch einen Ersatzstring ersetzt&lt;br /&gt;
# Aufruf:   @daten = &amp;amp;substitute_teacherlogins(\%config, \@teacher, @daten);&lt;br /&gt;
# Input:    %config   = die Daten der Konfiguration&lt;br /&gt;
#           $daten[x] = \($ip, $login, $gruppe, $rechner);&lt;br /&gt;
# Output:   $daten[x] = \($ip, $login, $gruppe, $rechner);&lt;br /&gt;
# Update:   16.12.2007&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
sub substitute_teacherlogins&lt;br /&gt;
{&lt;br /&gt;
  my $href_config  = shift;&lt;br /&gt;
  my $lref_teacher = shift;&lt;br /&gt;
  my @daten        = @_;&lt;br /&gt;
&lt;br /&gt;
  my %config  = %{$href_config};&lt;br /&gt;
  my @teacher = @{$lref_teacher};&lt;br /&gt;
&lt;br /&gt;
  my ($login, $anz, %teacher, @unvisible, %unvisible);&lt;br /&gt;
&lt;br /&gt;
  # wir bearbeiten zuerst die Lehrerlogins&lt;br /&gt;
  if ($config{TEACHER} eq &amp;#039;no&amp;#039;) {&lt;br /&gt;
    # um die Lehrerlogins schneller zu finden, erstellen wir einen Hash&lt;br /&gt;
    foreach my $element (@teacher) {&lt;br /&gt;
      $teacher{$element} = 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # wir holen uns noch die Logins, die nicht angezeigt werden sollen&lt;br /&gt;
  @unvisible = @{$config{UNVISIBLE}};&lt;br /&gt;
  # auch daraus erstellen wir einen Hash&lt;br /&gt;
  foreach my $element (@unvisible) {&lt;br /&gt;
    $unvisible{$element} = 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  foreach my $datum (@daten) {&lt;br /&gt;
    my @tmp = @{$datum};&lt;br /&gt;
&lt;br /&gt;
    # holen wir das Login&lt;br /&gt;
    $login = $tmp[1];&lt;br /&gt;
    # wir ueberpruefen, ob das Login im Hash %teacher ist&lt;br /&gt;
    if (exists($teacher{$login})) {&lt;br /&gt;
      $tmp[1] = $config{UNVISIBLESTRING};   # Login ersetzen&lt;br /&gt;
      $datum  = \@tmp;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
      # wir ueberpruefen, ob es im Hash %unvisible ist&lt;br /&gt;
      if (exists($unvisible{$login})) {&lt;br /&gt;
        $tmp[1] = $config{UNVISIBLESTRING};   # Login ersetzen&lt;br /&gt;
        $datum  = \@tmp;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return @daten;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
# Funktion: fuer unbesetzte PCs werden Dummy-Datensaetze ergaenzt&lt;br /&gt;
# Aufruf:   @daten = &amp;amp;gen_data_for_all_pcs(\%config, @daten);&lt;br /&gt;
# Input:    %config   = die Daten der Konfiguration&lt;br /&gt;
#           $daten[x] = \($ip, $login, $gruppe, $rechner);&lt;br /&gt;
# Output:   $daten[x] = \($ip, $login, $gruppe, $rechner);&lt;br /&gt;
# Update:   16.12.2007&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
sub gen_data_for_all_pcs&lt;br /&gt;
{&lt;br /&gt;
  my $href_conf = shift;&lt;br /&gt;
  my $href_pcs  = shift;&lt;br /&gt;
  my @daten     = @_;&lt;br /&gt;
&lt;br /&gt;
  my %conf      = %{$href_conf};&lt;br /&gt;
  my %pcs       = %{$href_pcs};&lt;br /&gt;
&lt;br /&gt;
  # wir stecken jetzt die Datensaetze in einen Hash, wobei der Key&lt;br /&gt;
  # der Rechnername und der Value der ganze Datensatz ist&lt;br /&gt;
  my %help      = ();&lt;br /&gt;
  my @datensatz = ();&lt;br /&gt;
  foreach my $ds (@daten) {&lt;br /&gt;
    @datensatz = @{$ds};&lt;br /&gt;
    $help{$datensatz[3]} = $ds;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  my @neu = ();&lt;br /&gt;
  my $temp;&lt;br /&gt;
  # fuer jeden PC aus diesem Raum (laut LDAP)&lt;br /&gt;
  foreach my $key (keys %pcs) {&lt;br /&gt;
    my @tmp = ($conf{ALTERNATE_STRING}, $conf{ALTERNATE_STRING}, $conf{ALTERNATE_STRING}, &amp;#039;&amp;#039;);&lt;br /&gt;
    $temp = $pcs{$key};   # $temp ist der Rechnername&lt;br /&gt;
    # wenn es diesen Rechnername in den Datensaetzen von smbstatus gibt&lt;br /&gt;
    if (exists( $help{$temp} )) {&lt;br /&gt;
      # dann nehmen wir diesen&lt;br /&gt;
      push @neu, $help{$temp};&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
      # sonst pushen wir einen Dummy-Datensatz&lt;br /&gt;
      $tmp[3] = $temp;&lt;br /&gt;
      push @neu, \@tmp;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return @neu;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
# Funktion: es wird die eigentliche Tabelle zusammengesetzt&lt;br /&gt;
# Aufruf:   $table = &amp;amp;get_table(\@daten,\%config,\%net_connection,\%room_connection);&lt;br /&gt;
# Input:    @daten = die bearbeiteten Daten aus smbstatus&lt;br /&gt;
#           %config = die Konfiguration&lt;br /&gt;
#           %net_connection - die Anzahl der Anmeldungen im Netz&lt;br /&gt;
#           %room_connection - die Anzahl der Anmeldungen im Raum&lt;br /&gt;
# Output:   $tabelle    = die Tabelle als ein großer String&lt;br /&gt;
# Update:   30.12.2007&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
sub get_table&lt;br /&gt;
{&lt;br /&gt;
  my $lref_daten  = shift;&lt;br /&gt;
  my $href_config = shift;&lt;br /&gt;
  my $href_net_connection  = shift;&lt;br /&gt;
  my $href_room_connection = shift;&lt;br /&gt;
&lt;br /&gt;
  my @daten  = @{$lref_daten};&lt;br /&gt;
  my %config = %{$href_config};&lt;br /&gt;
  my %net_connection  = %{$href_net_connection};&lt;br /&gt;
  my %room_connection = %{$href_room_connection};&lt;br /&gt;
&lt;br /&gt;
  my $tabelle = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
  my (@temp, $login, $farbe);&lt;br /&gt;
&lt;br /&gt;
  foreach my $datum (@daten) {&lt;br /&gt;
    @temp = @{$datum};&lt;br /&gt;
&lt;br /&gt;
    $tabelle .= &amp;#039;&amp;lt;tr&amp;gt;&amp;#039;;  # Beginn der HTML-Zeile&lt;br /&gt;
&lt;br /&gt;
    # ---------- die 1. Spalte: &amp;quot;Arbeitsplatz&amp;quot; ------------&lt;br /&gt;
&lt;br /&gt;
    $login = $temp[1];&lt;br /&gt;
    $farbe = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    # wenn Mehrfachanmeldungen angezeigt werden sollen&lt;br /&gt;
    if ($config{MULTIPLE_LOGIN} eq &amp;#039;yes&amp;#039;) {&lt;br /&gt;
      if (exists($net_connection{$login}) and ($net_connection{$login} &amp;gt; 1)) {&lt;br /&gt;
        $farbe = $config{IM_NETZ};&lt;br /&gt;
      }&lt;br /&gt;
      if (exists($room_connection{$login}) and ($room_connection{$login} &amp;gt; 1)) {&lt;br /&gt;
        $farbe = $config{IM_ROOM};&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if ( $farbe ne &amp;#039;&amp;#039; ) {&lt;br /&gt;
      $tabelle .= &amp;#039;&amp;lt;td bgcolor=&amp;quot;&amp;#039;.$farbe.&amp;#039;&amp;quot;&amp;gt;&amp;#039;.$temp[3].&amp;#039;&amp;lt;/td&amp;gt;&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
      $tabelle .= &amp;#039;&amp;lt;td&amp;gt;&amp;#039;.$temp[3].&amp;#039;&amp;lt;/td&amp;gt;&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # -------- die 2. Spalte: &amp;quot;IP-Adresse&amp;quot; ------------&lt;br /&gt;
&lt;br /&gt;
    $tabelle .= &amp;#039;&amp;lt;td&amp;gt;&amp;#039;.$temp[0].&amp;#039;&amp;lt;/td&amp;gt;&amp;#039;;     # IP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # -------- die 3. Spalte: &amp;quot;Account&amp;quot; ---------------&lt;br /&gt;
&lt;br /&gt;
    # wenn der Maillink angezeigt werden soll&lt;br /&gt;
    if ( ($config{MAIL_URL} eq &amp;#039;yes&amp;#039;)&lt;br /&gt;
          and ($temp[1] ne $config{UNVISIBLESTRING})&lt;br /&gt;
          and ($temp[1] ne $config{ALTERNATE_STRING}) ) {&lt;br /&gt;
       $tabelle .= &amp;#039;&amp;lt;td&amp;gt;&amp;lt;a href=&amp;quot;mailto:&amp;#039;.$temp[1].&amp;#039;@arktur&amp;quot;&amp;gt;&amp;#039;.$temp[1].&amp;#039;&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
      $tabelle .= &amp;#039;&amp;lt;td&amp;gt;&amp;#039;.$temp[1].&amp;#039;&amp;lt;/td&amp;gt;&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
    $tabelle .= &amp;#039;&amp;lt;/tr&amp;gt;&amp;#039;.&amp;quot;\n&amp;quot;;  # Ende der HTML-Zeile&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return $tabelle;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
# Funktion: Vergleichsfunktion fuer&amp;#039;s Sortieren der Daten nach Rechnernamen&lt;br /&gt;
# Aufruf:   @daten = sort { vergleich_rechner($a,$b) } @daten;&lt;br /&gt;
# Input:    $a, $b = Datensaetze aus der Liste&lt;br /&gt;
# Output:   -1 | 0 | 1  fuer &amp;quot;kleiner&amp;quot; | &amp;quot;gleich&amp;quot; | &amp;quot;groesser&amp;quot;&lt;br /&gt;
# Update:   30.12.2007&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
sub vergleich_rechner&lt;br /&gt;
{&lt;br /&gt;
  my $lref_a = shift;&lt;br /&gt;
  my $lref_b = shift;&lt;br /&gt;
&lt;br /&gt;
  my @datensatz1 = @{$lref_a};&lt;br /&gt;
  my @datensatz2 = @{$lref_b};&lt;br /&gt;
&lt;br /&gt;
  return ($datensatz1[3] cmp $datensatz2[3]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
# Funktion: Hilfsfunktion zur zweistelligen Darstellung der Zeitdaten&lt;br /&gt;
# Aufruf:   $sek = &amp;amp;zweistellig($sek);&lt;br /&gt;
# Input:    $sek oder $min oder $std&lt;br /&gt;
# Output:   diese Werte, aber zweistellig&lt;br /&gt;
# Update:   1.01.2008&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
sub zweistellig&lt;br /&gt;
{&lt;br /&gt;
  my $datum = shift;&lt;br /&gt;
&lt;br /&gt;
  if ($datum &amp;lt; 10) { $datum = &amp;#039;0&amp;#039;.$datum }&lt;br /&gt;
  return $datum;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
# Funktion: liefert formatierten Datumsstring&lt;br /&gt;
# Aufruf:   $date = &amp;amp;datum($format);&lt;br /&gt;
# Input:    String fuer das Ausgabeformat&lt;br /&gt;
# Output:   String mit Datum und Uhrzeit&lt;br /&gt;
# Update:   1.01.2008&lt;br /&gt;
#--------------------------------------------------------------------&lt;br /&gt;
sub datum&lt;br /&gt;
{&lt;br /&gt;
  my $format = shift;&lt;br /&gt;
&lt;br /&gt;
  my @date  = localtime();&lt;br /&gt;
  my $sek   = $date[0];&lt;br /&gt;
  my $min   = $date[1];&lt;br /&gt;
  my $std   = $date[2];&lt;br /&gt;
  my $tag   = $date[3];&lt;br /&gt;
  my $monat = $date[4] + 1;&lt;br /&gt;
  my $jahr  = $date[5] + 1900;&lt;br /&gt;
&lt;br /&gt;
  $sek = &amp;amp;zweistellig($sek);&lt;br /&gt;
  $min = &amp;amp;zweistellig($min);&lt;br /&gt;
  $std = &amp;amp;zweistellig($std);&lt;br /&gt;
&lt;br /&gt;
  my $rueckgabe = $format;&lt;br /&gt;
  $rueckgabe =~ s/%%tag%%/$tag/;&lt;br /&gt;
  $rueckgabe =~ s/%%monat%%/$monat/;&lt;br /&gt;
  $rueckgabe =~ s/%%jahr%%/$jahr/;&lt;br /&gt;
  $rueckgabe =~ s/%%stunde%%/$std/;&lt;br /&gt;
  $rueckgabe =~ s/%%minute%%/$min/;&lt;br /&gt;
  $rueckgabe =~ s/%%sekunden%%/$sek/;&lt;br /&gt;
&lt;br /&gt;
  return $rueckgabe;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
__END__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kirmse</name></author>
	</entry>
</feed>