Windows 10 Deployment

comfreak
Beiträge: 34
Registriert: 23 Mär 2012, 16:37

Windows 10 Deployment

Beitrag von comfreak »

Hi,

wir sind im Moment dabei unsere Rechner auf Windows 10 zu migrieren. Ich habe dafür eine VM installiert, die ich so konfiguriere, wie die späteren Rechner konfiguriert sein sollen.

Ich bin mittlerweile bei der Opsiverteilung angekommen. Bisher verteilen wir den Opsiclient via einer Batch Datei, die per GPO aufgerufen wird. In der Batch wird der opsi-deploy-client-agent Befehl via plink aufgerufen.

plink -batch -v -ssh -P 22 -pw <Passwort> -hostkey <key> root@opsi.<Domain> /var/lib/opsi/depot/opsi-client-agent/opsi-deploy-client-agent -v -o -u <Domain>\\<User> -p <Passwort> -x %COMPUTERNAME%.<Domain>

Leider funktioniert es nicht, da ich den Fehler NT_STATUS_CONNECTION_RESET zurück bekomme:

Code: Alles auswählen

root@opsi:~# /var/lib/opsi/depot/opsi-client-agent/opsi-deploy-client-agent -vv -o -u <Domain>\\<User> -p <Passwort> -x win10test.<Domain>
Deploying to Windows.
* BackendManager is creating BackendDispatcher
Backend context was set to <BackendManager(name=None)>
Loading dispatch config file '/etc/opsi/backendManager/dispatch.conf'
Loading backend config '/etc/opsi/backends/opsipxeconfd.conf'
Backend context was set to <BackendDispatcher(name=None)>
Loading backend config '/etc/opsi/backends/mysql.conf'
Backend context was set to <BackendDispatcher(name=None)>
Verifying modules file signature
Modules file signature verified (customer: <Kunde>, <Stadt>)
* BackendManager is creating ExtendedConfigDataBackend
Setting context to backend <ExtendedConfigDataBackend(configDataBackend=<BackendDispatcher(name=None)>)>
Got hostId win10test.<Domain>
Getting hosts, filter: {'type': 'OpsiClient', 'id': u'win10test.<Domain>'}
Starting deployment to host 'win10test.<Domain>'
Querying for ip address of host 'win10test.<Domain>'
Getting host 'win10test.<Domain>' by name
Got ip address '192.168.212.163' from syscall
Pinging host 192.168.212.163 ...
Executing: ping -q -c2 192.168.212.163
Using encoding 'UTF-8'
Host 192.168.212.163 is up
Getting hosts, filter: {'type': 'OpsiClient', 'id': u'win10test.<Domain>'}
Getting hardware ethernet address of host 'win10test.<Domain>'
Found hardware ethernet address '<MAC>'
Creating client 'win10test.<Domain>'
Creating host '<OpsiClient(id=u'win10test.<Domain>')>'
Getting hosts, filter: {'type': 'OpsiClient', 'id': u'win10test.<Domain>'}
Testing winexe
Executing: /usr/bin/winexe -U '<Domain>\<User>%*** confidential ***' //win10test.<Domain> 'cmd.exe /C "del /s /q c:\tmp\opsi-client-agent_inst && rmdir /s /q c:\tmp\opsi-client-agent_inst || echo not found"'
Using encoding 'UTF-8'
Winexe failure 'Command '/usr/bin/winexe -U '<Domain>\<User>%*** confidential ***' //win10test.<Domain> 'cmd.exe /C "del /s /q c:\tmp\opsi-client-agent_inst && rmdir /s /q c:\tmp\opsi-client-agent_inst || echo not found"'' failed (1):
ERROR: Failed to open connection - NT_STATUS_CONNECTION_RESET', retrying
Executing: /usr/bin/winexe -U '<Domain>\<User>%*** confidential ***' //win10test.<Domain> 'cmd.exe /C "del /s /q c:\tmp\opsi-client-agent_inst && rmdir /s /q c:\tmp\opsi-client-agent_inst || echo not found"'
Using encoding 'UTF-8'
Deployment to 'win10test.<Domain>' failed: Failed to execute command on host 'win10test.<Domain>': winexe error: Command '/usr/bin/winexe -U '<Domain>\<User>%*** confidential ***' //win10test.<Domain> 'cmd.exe /C "del /s /q c:\tmp\opsi-client-agent_inst && rmdir /s /q c:\tmp\opsi-client-agent_inst || echo not found"'' failed (1):
ERROR: Failed to open connection - NT_STATUS_CONNECTION_RESET
Deleting client <OpsiClient(id=u'win10test.<Domain>')> from backend.
Getting objectToGroups, filter: {'groupType': 'HostGroup', 'objectId': u'win10test.<Domain>'}
Getting productOnClients, filter: {'clientId': u'win10test.<Domain>'}
Getting productPropertyStates, filter: {'objectId': u'win10test.<Domain>'}
Getting configStates, filter: {'objectId': u'win10test.<Domain>'}
Getting bootConfigurations, filter: {'name': [], 'clientId': u'win10test.<Domain>'}
Getting auditSoftwareOnClient, filter: {'clientId': u'win10test.<Domain>'}
Getting auditHardwareOnHosts, filter: {'hostId': u'win10test.<Domain>'}
License management module disabled
License management module disabled
License management module disabled
Deleting host <OpsiClient(id=u'win10test.<Domain>')>
Getting auditHardwareOnHosts, filter: {'objectId': u'win10test.<Domain>'}
Getting objectToGroups, filter: {'groupType': 'HostGroup', 'objectId': u'win10test.<Domain>'}
Getting productOnClients, filter: {'clientId': u'win10test.<Domain>'}
Getting productPropertyStates, filter: {'objectId': u'win10test.<Domain>'}
Getting configStates, filter: {'objectId': u'win10test.<Domain>'}
Getting bootConfigurations, filter: {'name': [], 'clientId': u'win10test.<Domain>'}
Getting auditSoftwareOnClient, filter: {'clientId': u'win10test.<Domain>'}
Getting auditHardwareOnHosts, filter: {'hostId': u'win10test.<Domain>'}
License management module disabled
License management module disabled
License management module disabled
Windows-Firewall und Antivirus ist ausgeschaltet. Nach meiner Recherche müsste unsere Opsiversion mit Windows 10 klarkommen:

=> https://uib.de/de/opsi/aktuelles/opsi-406/
root@opsi:~# opsi-admin -V
opsi-admin 4.0.6.9

Problematisch ist wohl winexe, ich kann damit noch nicht mal ein 'cmd.exe /C dir' absetzen, was bei einem Windows 7 ohne Probleme funktioniert.

Wir verwenden noch ein Ubuntu 12.04.5 LTS und können nicht mehr einfach so upgraden, ohne die Distribution auf einen neueren Stand zu bringen.

root@opsi:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.5 LTS
Release: 12.04
Codename: precise

Irgendwelche Hinweise? Hat jemand so etwas ähnliches gehabt?
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Windows 10 Deployment

Beitrag von n.wenselowski »

Hi,

mein gut gemeinter Ratschlag ist unabhängig von deinem Problem den opsi-Server auf eine unterstützte Distribution zu aktualisieren!
comfreak hat geschrieben:Bisher verteilen wir den Opsiclient via einer Batch Datei, die per GPO aufgerufen wird. In der Batch wird der opsi-deploy-client-agent Befehl via plink aufgerufen.
Das finde ich sehr abenteuerlich. :shock:
Aber solange es funktioniert :lol:

Ich würde entweder mal eine neuere Version der Winexe probieren oder den Agent per .msi unter Verwendung der service_setup.cmd verteilen.


Gruß

Niko

Code: Alles auswählen

import OPSI
comfreak
Beiträge: 34
Registriert: 23 Mär 2012, 16:37

Re: Windows 10 Deployment

Beitrag von comfreak »

Hi,

danke für die Antwort. Ich habe die Distri auf 14.04 gezogen und Opsi auf den neusten Stand gebracht - funktioniert leider immer noch nicht.

Wenn ich das richtig sehe, benutzen wir die neuste Version der winexe:

Code: Alles auswählen

root@opsi:~# apt-cache policy winexe
winexe:
  Installiert:           1.00-1
  Installationskandidat: 1.00-1
  Versionstabelle:
 *** 1.00-1 0
        100 /var/lib/dpkg/status
Ich verteile den Opsi Client jetzt mit Hilfe einer abgeänderten silent_setup.cmd, welche vorher prüft, ob Opsi bereits installiert ist. Ich möchte, dass bei jedem Start von Windows geprüft wird, ob Opsi drauf ist. Wir haben hier Mitarbeiter, die das gerne löschen würden (Thema Adminrechte ist ein Anderes...).
Das finde ich sehr abenteuerlich. :shock:
Aber solange es funktioniert :lol:
Wieso? Welche Methode würde man verwenden, wenn man bei jedem Start prüfen will, ob der Client installiert ist und wenn nicht, einfach nachinstalliert?
rene-fuchs
Beiträge: 16
Registriert: 31 Jan 2017, 10:10

Re: Windows 10 Deployment

Beitrag von rene-fuchs »

ähm ich habe das gleiche Problem,
kann via GUI noch weder cli den agent installieren.

wie ist deine cmd? oder was war des rätsels lösung

René
comfreak
Beiträge: 34
Registriert: 23 Mär 2012, 16:37

Re: Windows 10 Deployment

Beitrag von comfreak »

Hi,

juhu, ich bin zum Glück nicht der Einzige. :D Vielleicht ist es doch ein Bug und die UIB kann dies bestätigen (evtl. tritt das auch nur mit der neusten Windows 10 Update Version auf? Habe hier die 1709)?

Nein, eine Lösung für die CLI habe ich leider nicht. Hier die geänderten CMDs (überwiegend habe ich dort Zeilen für ein Logfile hinzugefügt). Ich bin nicht der beste Programmierer, daher bitte nachsicht..:) Die silent_setup.cmd wird über eine GPO aufgerufen - daher der Pfad zum SysVol.
@echo off
echo %date% %time% >> c:\opsilog.log
echo silent_setup.cmd gestartet, service_setup wird aufgerufen... >> c:\opsilog.log
call "\\<DOMAIN>\SysVol\<DOMAIN>\Policies\{58F54248-3B44-4525-89F6-98FB8CE1C20F}\Machine\Scripts\Startup\service_setup.cmd" /u /noreboot
Hier habe ich noch Prüfungen eingebaut, falls das Laufwerk O: bereits genutzt wird. Die Prüfung, ob Opsi schon installiert ist, wird ab Zeile 70 durchgeführt.
@echo off

echo %date% %time% >> c:\opsilogWin10.log
echo service_setup.cmd gestartet >> c:\opsilogWin10.log
if not exist O:\ set script_drive=o: & goto mapping
if not exist A:\ set script_drive=a: & goto mapping
if not exist B:\ set script_drive=b: & goto mapping
if not exist C:\ set script_drive=c: & goto mapping
if not exist D:\ set script_drive=d: & goto mapping
if not exist E:\ set script_drive=e: & goto mapping
if not exist F:\ set script_drive=f: & goto mapping
if not exist G:\ set script_drive=g: & goto mapping
if not exist H:\ set script_drive=h: & goto mapping
if not exist I:\ set script_drive=i: & goto mapping
if not exist J:\ set script_drive=j: & goto mapping
if not exist K:\ set script_drive=k: & goto mapping
if not exist L:\ set script_drive=l: & goto mapping
if not exist M:\ set script_drive=m: & goto mapping
if not exist N:\ set script_drive=n: & goto mapping
if not exist P:\ set script_drive=p: & goto mapping
if not exist Q:\ set script_drive=q: & goto mapping
if not exist R:\ set script_drive=r: & goto mapping
if not exist S:\ set script_drive=s: & goto mapping
if not exist T:\ set script_drive=t: & goto mapping
if not exist U:\ set script_drive=u: & goto mapping
if not exist V:\ set script_drive=v: & goto mapping
if not exist W:\ set script_drive=w: & goto mapping
if not exist X:\ set script_drive=x: & goto mapping
if not exist Y:\ set script_drive=y: & goto mapping
if not exist Z:\ set script_drive=z: & goto mapping

:mapping
if not %~d0%==\\ (
set script_drive=%~d0%
goto :mapped
)
set unc=%~f0%
for /f "tokens=1,2,* delims=\" %%a in ("%unc%") do set server=%%a&set share=%%b&set script=%%c

echo %date% %time% >> c:\opsilogWin10.log
echo Verbinde Netzlaufwerk %script_drive% >> c:\opsilogWin10.log
net use %script_drive% \\%server%\%share% /persistent:no
%script_drive%
cd %script%\..

echo %date% %time% >> c:\opsilogWin10.log
echo Netzlaufwerk %script_drive% auf Computer %COMPUTERNAME% verbunden >> c:\opsilogWin10.log
:mapped
if %1!==/u! goto startwork
if %2!==/u! goto startwork
echo .
echo Aktueller PC: %COMPUTERNAME%
echo You are at PC: %COMPUTERNAME%
echo .
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo !! !!
echo !! Zum Starten der opsi-client-agent Installation !!
echo !! druecken Sie bitte eine beliebige Taste !!
echo !! Zum Abbrechen schliessen Sie einfach dieses Fenster !!
echo !! !!
echo !! To start the installation of the opsi-client-agent !!
echo !! just press any key !!
echo !! To cancel just close this window !!
echo !! !!
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo .
REM pause
:prework
echo %date% %time% >> c:\opsilogWin10.log
echo Prüfen, ob %programfiles(x86)%\opsi.org\opsi-client-agent\opsiclientd\opsiclientd.conf existiert >> c:\opsilogWin10.log
REM if exist "%programfiles(x86)%\opsi.org\opsi-client-agent\opsiclientd.exe" goto :exit2
REM if exist "%programfiles%\opsi.org\opsi-client-agent\opsiclientd.exe" goto :exit2
if exist "%programfiles(x86)%\opsi.org\opsi-client-agent\opsiclientd\opsiclientd.conf" goto :exit2
REM if exist "%programfiles%\opsi.org\opsi-client-agent\opsiclientd\opsiclientd.conf" goto :exit2
:startwork
echo %date% %time% >> c:\opsilogWin10.log
echo Prüfen, ob C:\tmp exisitert >> c:\opsilogWin10.log
if exist c:\opsi.org\tmp goto :startwinst
mkdir c:\opsi.org\tmp
mkdir c:\opsi.org\log

:startwinst
echo %date% %time% >> c:\opsilogWin10.log
echo Dateien kopieren und Winst starten >> c:\opsilogWin10.log
if not exist files\opsi\opsi-winst\winst32.exe goto :winstmissing
echo %date% %time% >> c:\opsilogWin10.log
echo xcopy starten... >> c:\opsilogWin10.log
xcopy /s/y/i files\opsi\*.* c:\opsi.org\tmp\opsi
rem copy "%comspec%" "%systemroot%\cmd64.exe"
if %1!==/noreboot! goto noreboot
if %2!==/noreboot! goto noreboot
echo winst32 mit Reboot installieren... >> c:\opsilogWin10.log
inst32.exe" /batch c:\opsi.org\tmp\opsi\setup.opsiscript c:\opsi.org\log\opsi-client-agent.log /PARAMETER INSTALL:CREATE_CLIENT:REBOOT
goto :endwinst

:noreboot
echo %date% %time% >> c:\opsilogWin10.log
echo winst32 ohne Reboot installieren >> c:\opsilogWin10.log
"c:\opsi.org\tmp\opsi\opsi-winst\winst32.exe" /batch c:\opsi.org\tmp\opsi\setup.opsiscript c:\opsi.org\log\opsi-client-agent.log /PARAMETER INSTALL:CREATE_CLIENT:NOREBOOT

:endwinst
echo %date% %time% >> c:\opsilogWin10.log
echo Opsi Winst ist fertig >> c:\opsilogWin10.log
echo %date% %time% >> c:\opsilogWin10.log
echo Starte Opsi-Dienst opsiclientd >> c:\opsilogWin10.log
sc start opsiclientd
REM if %1!==/u! goto :exit
REM if %2!==/u! goto :exit
echo .
echo Installation abgeschlossen
echo Installation completed
echo .
REM pause
goto :exit

:winstmissing
echo .
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo !! !!
echo !! opsi- Winst not found !!
echo !! (File "files\opsi\opsi-winst\winst32.exe" does not exist) !!
echo !! Installation aborted !!
echo !! !!
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo .

if %1!==/u! goto :exit
if %2!==/u! goto :exit

REM pause
REM goto :exit

:exit
echo %date% %time% >> c:\opsilogWin10.log
net use %script_drive% /delete /yes
echo Installation beendet >> c:\opsilogWin10.log
exit
REM pause

:exit2
echo %date% %time% >> c:\opsilogWin10.log
net use %script_drive% /delete /yes
echo Opsi bereits installiert, keine weitere Installation durchgeführt >> c:\opsilogWin10.log
exit
REM pause
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Windows 10 Deployment

Beitrag von n.wenselowski »

Für die Installation auf Clients mit einer Windows-Version neuer als Windows 7 muss winexe neuer als Version 1.0 vorhanden sein.
https://download.uib.de/opsi_stable/doc ... psi-deploy

Code: Alles auswählen

import OPSI
comfreak
Beiträge: 34
Registriert: 23 Mär 2012, 16:37

Re: Windows 10 Deployment

Beitrag von comfreak »

Hi,

danke für den Hinweis - da hatte ich wohl ein älteres Handbuch vorliegen, wo geschrieben wurde, dass man eine neuere Version als 0.90 braucht. :?

Jetzt habe ich nach einer neueren Version als 1.00 geschaut - finde aber nix. Weder in den Paketlisten (die dann Version 4.0.0alpha11-GIT-UNKNOWN ausgibt, was aber wohl laut Recherche normal ist)...

Code: Alles auswählen

root@opsi:~# winexe -V
Version 4.0.0alpha11-GIT-UNKNOWN

Code: Alles auswählen

root@opsi:~# apt-cache policy winexe
winexe:
  Installiert:           1.00-1
  Installationskandidat: 1.00-1
  Versionstabelle:
 *** 1.00-1 0
        100 /var/lib/dpkg/status
...noch auf Sourceforge...

https://sourceforge.net/projects/winexe ... rce=navbar

...noch auf Github...

https://github.com/skalkoto/winexe

...noch bei euch auf dem Downloadserver...

https://download.uib.de/opsi4.0/winexe/opsi40/

Ich habe es dann versucht selber zu compilieren (https://sourceforge.net/p/winexe/wiki/Home/), was sich unter Ubuntu 14.04 aber als eine Katastrophe herausstellt. Mehrere Abhängigkeiten fehlen, aber Schlussendlich bleibt es bei diesem Fehler, wo ich keine Lösung zu gefunden habe, hängen:

Code: Alles auswählen

Checking compiler for full RELRO support                                               : yes
Checking if toolchain accepts -fstack-protector                                        : yes
'configure' finished successfully (1m14.235s)
        Selected embedded Heimdal build
Waf: Entering directory `/root/samba/bin'
        Selected embedded Heimdal build
[3340/3830] Compiling default/source/smb_static/smb_static.objlist.empty.c
Waf: Leaving directory `/root/samba/bin'
Build failed: could not find 'source/smb_static/smb_static.objlist.empty.c' for
        {task: cc smb_static.objlist.empty.c -> smb_static.objlist.empty_2.o}
Checking for library smb_static                     : not found
Build of static winexe                              : disabled
Cannot continue! Please either install Samba shared libraries and re-run waf, or download the Samba source code and re-run waf with the "--samba-dir" option.
(complete log in /root/winexe-winexe-waf/source/build/config.log)
Ich habe dann noch ein *.deb Paket gefunden https://launchpad.net/~cybersec/+archiv ... ld/7935122, welches aber eine ältere Version von samba-libs (2:4.1.6+dfsg-1ubuntu2.14.04.9) voraussetzt. Diese lässt sich aber unter Trusty Tahr auch nicht "mal eben so" installieren.

Heisst für mich: Winexe ist einfach noch nicht für Win10 soweit - und so lange ist diese Opsi-Deploy Methode für Win10 nicht geeignet.

Wenn jemand doch eine Lösung hat: her damit! ;)
AlexB
Beiträge: 80
Registriert: 07 Mär 2017, 17:41

Re: Windows 10 Deployment

Beitrag von AlexB »

comfreak hat geschrieben: Heisst für mich: Winexe ist einfach noch nicht für Win10 soweit - und so lange ist diese Opsi-Deploy Methode für Win10 nicht geeignet.
Hatten bei uns auch schon länger das Problem (CentOS Server).
Habe die neuere Winexe (https://download.uib.de/opsi4.0/winexe/) aber noch nicht ausprobiert, da es aktuell bei uns läuft :lol:
Bei uns siehts momentan so aus:
1. Programm auf dem Adminrechner erstellt auf dem Server einen neuen Host und kopiert die Daten vom Share zum neuen Host (das ist ja 1 zu 1 das was auch das Client Agent Deployment Skript macht)
2. Wenn die Daten drüben sind wird dann auf dem neuen Host mit PSExec die Installation angestoßen.

Wenn wir demnächst den Server in einen Dockercontainer umziehen werd ich mich nochmal dran versuchen Winexe wieder zum Laufen zu bekommen :D
comfreak
Beiträge: 34
Registriert: 23 Mär 2012, 16:37

Re: Windows 10 Deployment

Beitrag von comfreak »

Habe die neuere Winexe (https://download.uib.de/opsi4.0/winexe/) aber noch nicht ausprobiert, da es aktuell bei uns läuft :lol:
Naja das ist ja auch "nur" die 1.00er Version, die bei uns auch mit Win7 läuft. Mit Windows 10 jedoch leider nicht (Win8 keine Erfahrung).
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Windows 10 Deployment

Beitrag von n.wenselowski »

Hi,
comfreak hat geschrieben:Jetzt habe ich nach einer neueren Version als 1.00 geschaut - finde aber nix. Weder in den Paketlisten (die dann Version 4.0.0alpha11-GIT-UNKNOWN ausgibt, was aber wohl laut Recherche normal ist)...
Das bauen der neuen Versionen ist leider nicht mehr so trivial wie früher, weshalb wir nicht für alle Distros eine neuere Version in den Repos haben.
Für manche gibt es in den Repos schon die gepatchte Version 1.00.1. Allen anderen kann ich nur empfehlen sie selbst zu bauen - oder das beim uib Support anzufragen.

Grundsätztlich funktioniert die Winexe nämlich auch mit Windows 10.



Gruß

Niko

Code: Alles auswählen

import OPSI
Antworten