Seite 1 von 1
Mounten von Netzwerkfreigaben via OPSI
Verfasst: 18 Jul 2016, 14:20
von larsg
Hi,
ich habe hier eine Anwendung, die braucht wärend der Installation zwingend Zugriff auf ein Netzlaufwerk.
ich habe probiert das Laufwerk wärend der Laufzeit des Winst-Skripts zu mounten, dies schlägt jedoch fehl mit Fehlercode 1312.
Code:
Code: Alles auswählen
[DosInAnIcon_mount_share]
Net use $Drive$ \\$Server$\$Share$ /persistent:no /user:$Username$ $Password$
Log:
Code: Alles auswählen
[5] [Jul 18 14:06:23:662] [3a-survey] DosInAnIcon_mount_share
[6] [Jul 18 14:06:23:665] [3a-survey] c:\opsi.org\tmp\_opsiscript_Jy70Bq85.cmd saved back
[6] [Jul 18 14:06:23:665] [3a-survey] Executing "cmd.exe" /C c:\opsi.org\tmp\_opsiscript_Jy70Bq85.cmd
[6] [Jul 18 14:06:23:993] [3a-survey] ExitCode 2
[6] [Jul 18 14:06:23:994] [3a-survey]
[6] [Jul 18 14:06:23:994] [3a-survey] output:
[6] [Jul 18 14:06:23:994] [3a-survey] --------------
[6] [Jul 18 14:06:23:994] [3a-survey]
[6] [Jul 18 14:06:23:994] [3a-survey] C:\Windows\system32>Net use M: \\server.fqdn.tld\3A-Editor /persistent:no /user:***(confidential)*** ***(confidential)***
[6] [Jul 18 14:06:23:994] [3a-survey] Systemfehler 1312 aufgetreten.
[6] [Jul 18 14:06:23:994] [3a-survey]
[6] [Jul 18 14:06:23:994] [3a-survey] Eine angegebene Anmeldesitzung ist nicht vorhanden. Sie wurde gegebenenfalls bereits beendet.
Wenn ich den Befehl direkt aus dem Log kopiere und auf dem betreffenden Client manuell ausführe, funktioniert der Mount ohne Probleme.
Zu dem Fehler sind nur nichtssagende "probier mal so" Beiträge zu finden, es scheint keine Lösung zu geben. Die Position des Kennworts in der Kommandozeile ist im übrigen nicht relevant.
Ich bin in einem Microsoft-Forum schlussendlich auf einen Beitrag gestoßen, dort hieß es das für den SYSTEM-Account der Zugriff auf Netzwerkfreigaben eingeschränkt wurde, und man mit NullSession-Shares arbeiten soll, was auch immer das heißt.
Wie macht OPSI das denn? Die Depotfreigabe wird doch auch unter dem SYSTEM-Account gemountet.
Bzw. hat schonmal jemand erfolgreich ein Netzlaufwerk via OPSI, unter Angabe eines anderen Benutzeraccounts, mounten können?
Re: Mounten von Netzwerkfreigaben via OPSI
Verfasst: 18 Jul 2016, 14:45
von uncle_scrooge
Betriebssystem Client?
Freigabe wird von was bereitgestellt? Server? NAS?
Wenn Server, Windows? Linux/Samba?
Wenn Windows, Version?
Ist die Maschine, die die Freigabe bereitstellt in die Domäne eingebunden?
Benutzername wird wie mitgegeben? Nur <meinbenutzername>, oder <meinedomäne>\<meinbenutzername>?
(null session share ist, wie der Name schon suggeriert, eine Freigabe, auf die ohne jegliche Angabe von Anmeldedaten zugegriffen werden kann.)
Re: Mounten von Netzwerkfreigaben via OPSI
Verfasst: 18 Jul 2016, 15:15
von larsg
Details zu der Freigabe kann ich dir aktuell nicht nennen.
Als Benutzername gebe ich entweder Domäne\Name oder Name@Domäne mit, je nach dem was der Installeur im ConfigEd einträgt.
Wie gesagt, maneulle Verbindung funktioniert in meinem Benutzerkontext - aber nicht im Kontext des System-Accounts.
Re: Mounten von Netzwerkfreigaben via OPSI
Verfasst: 18 Jul 2016, 17:01
von uncle_scrooge
>>Details zu der Freigabe kann ich dir aktuell nicht nennen.
Dann kommen wir (oder besser ich) nicht weiter.
Ich habe das quick'n'dirty mal nachgestrickt:
[Actions]
DefVar $Drive$
DefVar $Server$
DefVar $Share$
DefVar $Username$
DefVar $Password$
set $Drive$ = "g:"
set $Server$ = "xxx"
set $Share$ = "all"
set $Username$ = "nix\xxx"
set $Password$ = "xxx"
DOSInAnIcon_mount
[DOSInAnIcon_mount]
Net use $Drive$ \\$Server$\$Share$ /persistent:no /user:$Username$ $Password$
Und das führt zu:
(77) [5] [Jul 18 16:51:13:123] [dummy] DOSInAnIcon_mount
(78) [6] [Jul 18 16:51:13:127] [dummy] c:\opsi.org\tmp\_opsiscript_Ks01Jv24.cmd saved back
(79) [6] [Jul 18 16:51:13:127] [dummy] Executing "cmd.exe" /C c:\opsi.org\tmp\_opsiscript_Ks01Jv24.cmd
(80) [6] [Jul 18 16:51:15:973] [dummy] ExitCode 0
(81) [6] [Jul 18 16:51:15:973] [dummy]
(82) [6] [Jul 18 16:51:15:973] [dummy] output:
(83) [6] [Jul 18 16:51:15:973] [dummy] --------------
(84) [6] [Jul 18 16:51:15:973] [dummy]
(85) [6] [Jul 18 16:51:15:973] [dummy] C:\Windows\system32>Net use g: \\xxx\all /persistent:no /user:nix\xxx xxx
(86) [6] [Jul 18 16:51:15:973] [dummy] Der Befehl wurde erfolgreich ausgeführt.
(87) [6] [Jul 18 16:51:15:973] [dummy]
(88) [6] [Jul 18 16:51:15:973] [dummy]
Hier spielt allerdings keine Domäne mit. Client ist W7.
(Vielleicht noch einen Versuch. Wenn Du Deinen Befehl über psexec -s <deinnetusebefehl> ausführst, was passiert dann?)
Re: Mounten von Netzwerkfreigaben via OPSI
Verfasst: 18 Jul 2016, 17:09
von n.wenselowski
Hi,
larsg hat geschrieben:Wie macht OPSI das denn? Die Depotfreigabe wird doch auch unter dem SYSTEM-Account gemountet.
Das ist vermutlich nicht die Antwort, die du willst, aber ungefähr so:
https://github.com/opsi-org/python-opsi ... ws.py#L685 
Je nachdem wie das ganze läuft noch mit Impersonation...
Um dich hier weiter zu bringen:
Hast du schon versucht opsi-template-with-admin als Basis zu nehmen? Dort gibt es einen richtigen User-Account.
Viele Grüße
Niko
Re: Mounten von Netzwerkfreigaben via OPSI
Verfasst: 18 Jul 2016, 18:02
von uncle_scrooge
Nachtrag.
Das Ganze funktioniert bei mir auch in einer Domäne.
Gegen NetApp, Server 2003R2/2008R2/2012R2.
KEINE DFS-shares.(Das tue ich mir nicht an.)
Ich würde erst einmal klären, was den share bereitstellt. Und was da konfiguriert wurde.
(Und ja, ich habe verstanden, daß das mit Deinem normalen account funktioniert. Aber das ist eine ganz andere Baustelle.)
Re: Mounten von Netzwerkfreigaben via OPSI
Verfasst: 22 Jul 2016, 16:07
von larsg
Hi,
Immerhin ist es mit OPSI machbar - das sind schonmal Super Neuigkeiten für eine ganze Reihe von Baustellen die ich noch offen hab

Es liegt dann offenbar am Share bzw. unserer Umgebung, das kläre ich mit den Leuten wenn ich aus dem Urlaub zurück bin - Update folgt dann sobald ich was rausbekommen hab.
Danke Niko für den Tip mit dem Template, werde ich mir mal näher anschauen.

Re: Mounten von Netzwerkfreigaben via OPSI
Verfasst: 25 Jul 2016, 15:56
von ngbr
Hi larsg,
ich meine, schon mal Rechte für 'SYSTEM' auf dem Share vergeben zu haben, dann ging das.
War eine Windows Server- Freigabe. Kann auch sein es waren mehr Rechte, das weiß ich nicht mehr genau.
vg Andre
Re: Mounten von Netzwerkfreigaben via OPSI
Verfasst: 26 Jul 2016, 13:18
von pandel
Wir haben das eine Zeit lang für die Verteilung von MS Patchen genutzt, die via WSUS Offline Downloader heruntergeladen wurden. Die lagen auf einem Netzwerkshare, der wurde einfach gemountet und das Update angeworfen.
Konfigurierbar war das via product properties.
Hier mal meine beiden zuständigen Files, vielleicht hilft es dir ja:
opsi control file
Code: Alles auswählen
[Package]
version: 10
depends:
incremental: False
[Product]
type: localboot
id: mspatches
name: Microsoft Patche (WSUSOffline basiert)
description: Installiert Microsoft Patche (WSUS Offline Download basierend)
advice:
version: 1.0
priority: -62
licenseRequired: False
productClasses:
setupScript: setup.ins
uninstallScript:
updateScript:
alwaysScript:
onceScript:
customScript:
userLoginScript:
[ProductProperty]
type: unicode
name: options
multivalue: True
editable: False
description: Install options
values: ["/instdotnet4", "/instie10", "/instie8", "/instie9", "/instmsse", "/instmssl", "/instpsh", "/instwd", "/nobackup", "/updatecpp", "/updatedx", "/updatercerts", "/updatetsc", "/updatewmp"]
[ProductProperty]
type: unicode
name: laufwerk
multivalue: True
editable: False
description: Temporärer Laufwerksbuchstabe für Patchinstallation
values: ["K:", "O:", "P:", "X:", "Y:", "Z:"]
default: ["K:"]
[ProductProperty]
type: unicode
name: share
multivalue: False
editable: True
description: Netzwerkshare, auf dem die Patche liegen
values: ["[\"\\\\server\\share\"]"]
default: ["[\"\\\\server\\share\"]"]
[ProductProperty]
type: unicode
name: pfad
multivalue: True
editable: True
description: Pfad (ohne Laufwerksbuchstaben), in dem das Client Unterverzeichnis des WSUSOffline Downloaders liegt
values: ["[\"Patche\\Win2008Srv\"]", "[\"Patche\\WinXP\"]"]
[ProductProperty]
type: unicode
name: benutzer
multivalue: False
editable: True
description: Netzwerkbenutzer, mit der Share zugeordnet wird
values: ["benutzer"]
default: ["benutzer"]
[ProductProperty]
type: unicode
name: passwort
multivalue: False
editable: True
description: Passwort
values: ["p@ssw0rt"]
default: ["p@ssw0rt"]
[Changelog]
mspatches (1.0-9) testing; urgency=low
* Initial version
-- Holger Pandel <holger.pandel@volksbank-niederrhein.de> Thu, 28 Feb 2013 16:39:36 + 0100
setup.ins
Code: Alles auswählen
; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib
; and published under the Terms of the General Public License.
; credits: http://www.opsi.org/credits/
[Actions]
requiredWinstVersion >= "4.10.8.6"
DefVar $LogDir$
DefVar $ProductId$
DefVar $MinimumSpace$
DefVar $ExitCode$
;
; get product properties for options and install
;
; multi-value values are return as string, seperated by ",", eg. "value1,value2,value3",
; therefore we replace "," by " " (split, compose)
;
DefVar $Options$
DefVar $updLfw$
DefVar $updShare$
DefVar $updUser$
DefVar $updPass$
DefVar $updPath$
Set $Options$ = composeString( splitString ( GetProductProperty("options",""), "," ), " " )
Set $updLfw$ = GetProductProperty("LAUFWERK","X:")
Set $updShare$ = GetProductProperty("SHARE","\\Server\Share")
Set $updUser$ = GetProductProperty("BENUTZER","benutzer")
SetLogLevel=0
Set $updPass$ = GetProductProperty("PASSWORT","p@ssw0rt")
SetLogLevel=5
Set $updPath$ = GetProductProperty("PFAD","wsusoffline")
comment "options: " + $Options$
Set $LogDir$ = "%SystemDrive%\tmp"
; ----------------------------------------------------------------
; - Please edit the following values -
; ----------------------------------------------------------------
;$ProductId$ should be the name of the product in opsi
; therefore please: only lower letters, no umlauts,
; no white space use '-' as a seperator
Set $ProductId$ = "mspatches"
Set $MinimumSpace$ = "1000 MB"
; ----------------------------------------------------------------
if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$))
LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductId$
isFatalError
; Stop process and set installation status to failed
else
comment "Show product picture"
ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" "Microsoft Patche"
comment "installing"
Message "Installing " + $ProductId$ + " ..."
comment "Start setup program"
SetLogLevel=0
Winbatch_link_share
SetLogLevel=5
ExecWith_install "cmd.exe" /C
Sub_check_exitcode
Winbatch_unlink_share
endif
[Winbatch_link_share]
net use $updLfw$ $updShare$ /user:$updUser$ $updPass$ /persistent:no
[Winbatch_unlink_share]
net use $updLfw$ /d
[ExecWith_install]
;"%ScriptPath%\exit-wrapper.cmd" "$updLfw$\$updPath$\client\cmd\DoUpdate.cmd" $Options$
"%ScriptPath%\exit-wrapper.cmd" "$updLfw$\$updPath$\client\cmd\DoUpdate.cmd" $Options$
[Sub_check_exitcode]
comment "Test for installation success via exit code"
set $ExitCode$ = getLastExitCode
; informations to exit codes see
; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx
; http://msdn.microsoft.com/en-us/library/aa368542.aspx
if ($ExitCode$ = "0")
comment "Looks good: setup program gives exitcode zero"
else
comment "Setup program gives a exitcode unequal zero: " + $ExitCode$
if ($ExitCode$ = "1605")
comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed."
comment "Uninstall of a not installed product failed - no problem"
else
if ($ExitCode$ = "1641")
comment "looks good: setup program gives exitcode 1641"
comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success."
ExitWindows /Reboot
else
if ($ExitCode$ = "3010")
comment "looks good: setup program gives exitcode 3010"
comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to complete the install. This message is indicative of a success."
ExitWindows /Reboot
else
if ($ExitCode$ = "3011")
comment "looks good: setup program gives exitcode 3011"
comment "ERROR_SUCCESS: wsusoffline requires reboot and rerun."
ExitWindows /ImmediateReboot
else
logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$
isFatalError
endif
endif
endif
endif
endif