N'abend allerseits,
da bin ich wieder nach längerem Herumbasteln.
(Ich erbitte weiterhin Hilfe!!! siehe unten.)
Der Stand ist jetzt folgender:
Ich habe mich an der Wiki-Anleitung für Samba Server PDC orientiert und auch die dort vorgeschlagene /etc/samba/smb.conf übernommen. Um die Login.bat - Dateien zu individualisieren habe ich nach dem Auskommentieren die entsprechende Zeile im Abschnitt [global] in logon script = %U.bat geändert (siehe dazu hier) und diese "username".bat dann im /home/samba/netlogon abgelegt.
Zwischenspiel AutoIT
Da ich auch nach intensivster Recherche keine wirklich befriedigende Batch-Lösung für eine Verifizierung des Online-Status meines Fileservers hinbekommen habe (dazu kann ich gerne an anderer Stelle diskutieren) habe ich das Problem mit folgendem handgeschnitzten AutoIT-Skript erschlagen:
if $cmdline[0]=0 then exit msgbox(0,"","Bitte Parameter übergeben")
$adresse = $cmdline[1]
$latenz = $cmdline[2]
$warten1 = $cmdline[3]
$warten2 = $cmdline[4]
$schleifen = $cmdline[5]
$zaehler = 0
While $zaehler <= $schleifen
If Ping($adresse, $latenz) = 0 Then
Else
sleep($warten2)
Exit
EndIf
sleep($warten1)
$zaehler = $zaehler + 1
WEnd
Das Ganze dann mit "Aut2exe.exe" kompiliert, "WartenAufServer.exe" genannt und im Win-Programme-Ordner abgelegt.
Zurück zur (personifizierten) Batch-Datei - die sehr kurz gehalten ist:
@echo off
start /wait C:\Programme\wake 00-11-22-33-44-55 192.168.1.255
start /wait C:\Programme\WartenAufServer.exe 192.168.1.10 100 1200 5000 990
net time \\domainserver /set /yes
net use m: \\fileserver\NUTZERNAME /persistent:no
Zweite Zeile: wake.exe ist ein kleines Stück Konsolen-Freeware zum Rechnerwecken, das ich ebenfalls in den Windows-Programme-Ordner gepackt und in die Batch eingebaut habe, weil die Idee, den Fileserver bei Anmeldung am PDC über WOL zu starten, nicht befriedigend funktioniert:
Die Ergänzung der /etc/samba/smb.conf des PDC unter [homes] um root preexec = etherwake 00:11:22:33:44:55 scheint nur dann aufgerufen zu werden, wenn sich Windows-Clients anmelden (?) - aber der Versuch, den Logon über den Ubuntu-Client (s.u.) durchzuführen, ließ den Fileserver kalt.
Nochmal zum Windows Teil: Ich habe die Samba-PDC Lösung ohne ActiveDirectory gewählt, weil ich die Features nicht brauche und den Aufwand mit der LDAP-Datenbank gescheut habe. Als Windows-Clients habe ich zwei XP-Prof. Rechner laufen.
Soweit erst einmal zum Windows Teil - das klappt ganz ordentlich, die Leute finden ihre Dateien (nach etwas Wartezeit) im "Eigenen Dateien" - Ordner.
So: Nun zur aktuellen Baustelle, bei der ich nochmal um Mithilfe bitte!!!
Neben den Win-Clients sollen nun auch vier Ubuntu 10.04 Clients an der Domäne hängen. Einmal abgesehen davon, dass durch den Umstieg auf Upstart für mich der Boot-Prozess weniger nachvollziehbar wurde, hat die Installation von Winbind (ohne AD) nicht immer funktioniert. bei zwei alten Celeron-Rechnern war es mehrmals und reproduzierbar nicht möglich, Winbind (befriedigend) zum Laufen zu bekommen. Offensichtlich wurden irgendwelche Dienste in der falschen Reihenfolge, oder zu spät gestartet - jedenfalls war ein Anmelden der Netz-User immer erst dann möglich, wenn man sich vorher als lokaler User auf einer der Konsolen eingeloggt hat, dann mit service nmbd stop und service smbd stop den Samba-Server stoppt, mit /etc/init.d/winbind restart winbind neu startet und dann mit service nmbd start und service smbd start den Samba-Server wieder startet. Danach war es dann auch möglich, sich als Netz-User anzumelden. (irgendeiner eine Idee? - na ja, gehört ja eigentlich nicht hierher). Selbst intensive Fummelei in den /etc/rcX-Ordnern und in den Upstart-Skripten in init blieben fruchtlos - FRUST
Na gut - zurück zum Thema:
Also: der PDC scheint den Befehl root preexec = etherwake 00:11:22:33:44:55 nur dann auszuführen, wenn sich ein Windows-Rechner anmeldet, nicht aber wenn der Client ein Ubuntu ist.
Das werde ich versuchen (für eine Ubuntu-Anmeldung) mit einem Start-Skript zu erledigen, dass dann (wann am besten??? - die Netzwerkkarte muss schon laufen!) beim Client-Boot abgearbeitet wird. Es soll...
... erstens ebenfalls noch einmal zur Sicherheit mit etherwake 00:11:22:33:44:55 ein MagicPackage an den Fileserver schicken,
... zweitend den Client so lange warten lassen, bis der Fileserver online ist (ein Stück Bash-Code, das den Rechner bis zum erfolgreichen Ping zum Fileserver warten lässt habe ich bereits gechrieben:
#!/bin/sh -e
#
# warten.sh
#
#
# Ein wesentliches Problem ist, dass ping in den meisten Varianten bei
# Misserfolg das Skript abbricht. So ist z.B. folgende Konstruktion
# nicht möglich: ANTWORT=$(ping -w2 -c2 $FILESERVER | grep -c "rtt")
# Wenn $FILESERVER erreicht wird, geht alles gut, aber wenn $FILESERVER
# offline ist, dann wird das Skript (warum auch immer) nicht weiter aus-
# geführt. Die einzige Lösung scheint die zu sein, den Ping-Befehl direkt
# in die IF-Anweisung einzubauen.
#
NOCHMAL=true
FILESERVER="192.168.1.1"
SCHLEIFE=0
while $NOCHMAL
do
SCHLEIFE=$(($SCHLEIFE+1))
# diese Schleife laeuft solange, bis entweder der $FILESERVER erfolgreich
# angepingt werden konnte (erste IF-Abfrage) oder die Schleife eine ziem-
# liche Zeit erfolglos rumprobiert hat, ob denn der $FILESERVER nun end-
# lich online ist.
# hier die erste IF-Abfrage
if ping -w 2 -c 2 $FILESERVER > /dev/null ; then
NOCHMAL=false
###### so, und ab hier kann dann das home-Laufwerk eingebunden werden ######
######### aber wie an dieser Stelle nochmal pam-mount starten ??? ##########
fi
# und hier die zweite IF-Abfrage
if [ $SCHLEIFE -gt 40 ]; then
# jeder "Durchlauf" dauert ca. 3 Sekunden, so dass hier etwa 2 Minuten
# gewartet wird, bis das Skript endgültig abgebrochen wird.
NOCHMAL=false
fi
# noch ein Sekuendchen warten, ehe alles von vorne losgeht...
sleep 1
done
exit 0
... und als letztes dann pam-mount noch einmal durchläuft.
Jetzt habe ich ganz aktuell gerade noch zwei Probleme:
Das Einbinden der jeweiligen Netzlaufwerke auf dem Fileserver klappt prima, wenn dieser zum Zeitpunkt des Bootens der Ubuntu-Clients schon läuft. Wie kann ich den pam-mount Prozess (der ja nicht in der fstab steht und deshalb über ein erneutes mount -a nicht angesprochen werden kann) erneut durchlaufen lassen. Das einzige, was ich nach intensiver Googelei fand, war die Aussage, dass es sich bei pam-mount eben NICHT um einen klassischen Dienst handele, den man "restarten" könne. Wie dann?
Wie bekomme ich mein kleines Stück Bash-Skript so in den Startablauf eingebaut, dass sichergestellt ist, dass der "restart" von pam-mount (wenn das überhaupt geht) NACH erfolgrechem Kontakt zum Fileserver erfolgt - und der Verbindungsprozess nicht parallel ausgeführt wird.
Ich bin weiterhin SEHR dankbar für Anregungen und Unterstützung
Mit nächtlichem Gruß
eckisch
NACHTRAG: Die Skript-Seite habe ich (hoffentlich) jetzt im Griff - die Frage, wann (und bei welchem login-Szenario) preexec tatsächlich ausgeführt wird, ist aktuell zunehmend nebensächlich (das Wecken des Fileservers habe ich jetzt einfach den Clients aufgedrückt). Mein Hauptproblem gilt derzeit der VERZÖGERTEN (!) Netzwerkanbindung der Ubuntu-Clients mit PAM-Mount (bei den XP-Clients habe ich einen Weg gefunden - s.o.). Aus diesem Grund habe ich das Thema im Forum Dateifreigaben im Netzwerk plaziert.