Partnerlinks:
Google

www.linux-club.de/ sehr aktives und kompetentes Board m. Fragen u. Antworten rund um Linux  |  www.linux-board.de/ privates Board m. Fragen u. Antworten rund um Linux  |  meybohm bei viando.de gute Tools - u.a. "Phase 5 / HTML Editor" mein Lieblings-HTML-Editor und "Proton" - guter Texteditor www.meybohm.de  |  Wunsch-Domain schon belegt? Hier finden Sie sie trotzdem!   |  Webhosting beim Testsieger 2007. www.greatnet.de  | 
Host Europe - World Class Internet Hosting
 

  Ein Pinguin-Logo    
news About Me linux referenz tips links downloads kontakt
 
News
About
Linux
Referenz
Tips
  Linux
  Sicherheit
  Perl
  Allround Server
  Fileserver Samba
  HTTP-Server
  Zope-Server
  SQL-Server
  Mail-Server
  Proxy_Server
  FAX-Server
  Netzwerk-Tools
  SMS-Tools
  Postscript
  MS Office
Links
Downloads
Kontakt

Besucher
seit 21.10.2002
 
Mein Gästebuch
 

SAMBA - DER Datei- und Drucker-Server für die Windowswelt (5)

Hilfsanwendungen für Samba

5.1 - Winpopup

Für den Administrator besteht immer wieder die Notwendigkeit, allen am Server angemeldeten Rechnern (bzw. den davor sitzenden Benutzern) eine Nachricht zukommen zu lassen. Sei es um ein paar Erfrischungen, in den viel zu warmen Serverraum zu bestellen ;-)) oder alle am Morgen zu motivieren ("Seid Ihr auch schon wach, ich glaube der Server geht bald wieder, die letzte Nacht war sehr erfolgreich!").

Dafür gibt es im Unix/Linux-Bereich ein Programm mit Namens "wall". Auf den Windows-Maschinen gibt es ein Programm mit dem man anderen angemeldeten Benutzern unter Angabe des Host-Namens Nachrichten schicken kann. Bei Win9x/ME heißt es Winpopup, im NT/2000/XP-Bereich Windows-Nachrichtendienst.

Wenn man nun aber einen "falschen Windows-Server" betreibt? - ... ist man natürlich auch nicht verloren. Man benutzt das Kommandozeilenprogramm "smbclient -M hostname". Daraufhin kann man eine Nachricht eingeben. Als Ende der Nachricht dient eine einzelne Zeile mit einem Punkt.

In Textdateien abgespeicherte Nachrichten können über folgenden Aufruf verwendet werden:

cat nachricht.txt | /usr/bin/smbclient -M hostname

5.2 - smb-wall.pl - Wipopup für viele Hosts

Zur Anwendung für das oben beschriebene Szenario des mitteilungsbedürftigen Administrators liefert das von SuSE in 8.1 integrierte Sambapaket das Skript "smb_wall.pl" von "farrar@parc.xerox.com" mit. Leider hat es bei mir nicht funktioniert. Also habe ich mich hingesetzt und Fehlersuche betrieben:

Problem Nr. 1

Durch die Option bind interfaces only in der smb.conf ist der Windows-Name-Server (nmbd) nicht erreichbar. Die Namensauflösung schlägt fehl.

Nachdem diese Option aus der smb.conf entfernt wurde funktionierte erst einmal der händische Aufruf von smbclient -M hostname.

Problem Nr. 2

Im Skript smb_wall.pl sollen in Zeile 34 Hostnamen mit Punkt ausgefiltert werden. Der Suchausdruck musste folgendermaßen geändert werden:

  next unless $client =~ /[^.]/;
Das geänderte Skript smb-wall.pl kann hier heruntergeladen werden.

Verwendung

Das Skript kann folgendermaßen verwendet werden:

  • smb-wall.pl host1 host2 host3
    - daraufhin gibt man den Text seiner Nachricht ein, beendet mit einer Zeile mit Punkt, und ab geht die Post an die als Parameter mitgegebenen Hosts
  • smb-wall.pl
    - die Nachricht wird an alle angemeldeten Hosts versandt
  • echo "Text der Nachricht" | smb-wall.pl > /dev/null
    - die per echo und pipe übergebene Nachricht wird an alle angemeldeten Hosts versandt (Variante mit Übergabe von Hostnamen auch möglich)
  • cat nachricht.txt | smb-wall.pl > /dev/null
    - die per cat und pipe übergebene Textdatei wird an alle angemeldeten Hosts als Nachricht versandt (Variante mit Übergabe von Hostnamen auch möglich)

5.3 - smb-user-wall.pl - Wipopup an bestimmte Benutzer

Oftmals hatte ich schon die Notwendigkeit an einen bestimmten Benutzer, von dem ich nicht weiß an welchem Client er sitzt, eine Nachricht zu schicken. Das kann eine Bestätigung für eine Aktion sein, bei der er durch den Username identifiziert wird. Dazu zählen auch Webbasierte Vorgänge, die nichts mit der Samba-/Windows-Anmeldung zu tun haben. Oder aber ich brauche eine Vertretung für die nächste Nachtschicht ;-).

Dazu habe ich das oben beschriebene Skript smb-wall.pl so angepasst, dass es nun möglich ist, einen Usernamen als Argument mitzugeben. Die Syntax ist sehr einfach:

smb-user-wall.pl username
Es werden nun alle Client-Hosts an denen der Service mit dem "Username" benutzt wird (ist eigentlich immer das Home-Verzeichnis des gesuchten Benutzers) in das Array @clients gepackt. An diese Liste von Client-Rechnern wird anschließend die Nachricht verschickt.

Die Möglichkeiten der Anwendung sind genauso vielfältig wie im oberen Beispiel mit dem Hilfsprogramm smb-wall.pl. Ladet das Skript herunter, verseht es mit Ausführungsrechten und "terrorisiert" eure Kollegen mit Messages in die verstecktesten Winkel der Firma - auf das ihr immer eine Vertretung findet ;-).

5.4 - Probleme mit der Namensauflösung

Beim Testen in meinem kleinen Heimnetzwerk funktionierte alles ganz gut. Als ich die Skripte aber auf Arbeit in einem etwas größeren Netzwerk ausprobieren wollte - ging es natürlich nicht. Es gab Probleme mit der Namensauflösung, da bei uns DHCP zur Adressvergabe verwendet wird und die Windowsmaschinen sehr zufällige Namen tragen.

In meinem Heimnetzwerk konnte mir das Script vorgaukeln, dass es wunderbar ist und alles macht was ich von ihm will ;-P, weil ich:

  • Meine Rechner so benannt hatte wie die User die die meiste Zeit daran sitzen.
  • Die Client-Rechner alle mit den gleichen Namen wie im Windows-Netzwerk in der hosts-Datei eingetragen waren.

Als Ergebnis entstand noch ein kleines Perl-Script welches ich der Allgemeinheit unter der GPL zur Verfügung stelle.

5.5 - Lösung mit automatischer "lmhosts"-Aktualisierung

Das Perl-Script smb2lmhosts.pl liest, sofern vorhanden, die Datei /etc/samba/lmhosts [SuSE 8.1] ein. Es werden alle unnötigen Zeilen übersprungen. Die IP-Adressen->Windows-Maschinennamen-Paare werden in einen Hash ("%machines") eingetragen.

Es werden alle Zeilen für ein Backup der Originaldatei in einem Array zwischengespeichert und im nächsten Schritt in eine Sicherungsdatei geschrieben.

Zu dem Hash der IP-Adressen/Maschinen-namen werden jetzt Werte hinzugefügt, die mit einem smbstatus-Aufruf und ein paar einfachen Filter-Funktionen aus den aktuell angemeldeten Clients erzeugt werden. Sollte einer der Machinennamen schon im Array stehen wird dieser übersprungen und es geht zur nächsten Zeile, die auf unseren Aufruf zurückgegeben worden ist.

5.5.1 - Sortierung der Einträge

Im folgenden werden die Paare im Hash "%machines" in ihre zwei Elemente zerlegt und einmal als "IP-Adresse|Maschinenname"-String sowie umgedreht zusammengesetzt. Diese Strings werden als Elemente zu zwei Arrays (einer für IP- und einer für Maschinennamen-Sortierung) hinzugefügt, welche dann sortiert werden.

Je nachdem welches Sortierkriterium (z.Zt. IP-Adresse oder Maschinenname möglich) man in Zeile 96 ausgewählt hat, wird das zugehörige sortierte Array zeilenweise zusammen mit einem Kommentar, dass dies eine automatisch generierte lmhosts-Datei ist, in die lmhosts-Datei geschrieben.

Wenn Tests in der freien Wildbahn ergeben sollten, dass das Script wirklich das macht, was es soll, dann sollte man es in die crontab eintragen und so alle 10 bis 20 min starten. So erhält man mit der Zeit eine lmhosts-Datei mit allen bisher angemeldeten Maschinen und ihren IP-Adressen.

Im oberen Bereich des Scriptes sind ein paar Einstellmöglichkeiten zwecks Dateinamen und dem Verhalten (z.B. wenn keine lmhosts-Datei gefunden wird).

Es sollte am Anfang mit erfundenen Dateinamen gearbeitet werden, um Erfahrungen zu sammeln und evtl. noch ein paar Probleme abstellen zu können. Sobald ein paar Erfahrungen gesammelt wurden oder auch bei neuen Ideen, bitte ich um eine Rückinfo.


   
SAMBA (1)
Intro
Allgemeines
Installation
Konfiguration
SAMBA (2)
Domain Controller
Startskript
Winpopup
SAMBA (3)
=> Drucker
Allgemeines
Grundkonfiguration
Druckershares
WinPOPUP-Nachricht
PDF-Ausdrucke
Drucker automatisch installieren
SAMBA (4)
=> SuSE 8.1
Unterschiede
Funktionen
Änderungen
Druckertreiber
Datums-Skript
SAMBA (5)
=> Hilfsprogramme
Winpopup
smb-wall.pl
smb-user-wall.pl
Probleme
Lösung
SAMBA (6)
=> Novell-like
Unterschiede
Novell Samba
Lösung
Verzeichnisstruktur
Fehlerquellen
 
©  09.09.2009  Heiko Teichmeier - Glauchau/Sa.