Andere Helfer

Aus Vosp.info
Wechseln zu:Navigation, Suche

Zurück zu OPSI

Windows updaten

tested and works

Patches herunterladen

wsusoffline/sh/DownloadUpdates.sh w61 deu /dotnet /msse
  • Windows 7 32 bit Versionen: w61
  • Sprache deutsch: deu
  • Net herunterladen: /dotnet
  • Microsoft Essentials : /msse

Mit OPSI auf den Client-Rechnern installieren

Der Ansatz von dass-it kann meiner Meinung nach nicht funktionieren. Hat er bei meinen Tests auch nicht. Hintergrund: es soll auf einem Netzlaufwerk ein *.cmd File ausgeführt werden. UNC-Pfade und cmd geht anscheinend nicht zusammen. Diese Aussage ist der bisher gefundene Konsens im Netz.
Lösung: Die winst-Funktion DosInAnIcon

Vorbereitung:

Das OPSI-Paket nennen wir wsusoffline. Es wird als \\server\wsusoffline exportiert.

OPSI-Paket

Das Verzeichniss client aus wsusoffline (Das aus dem zip-Archiv extrahiert wurde) enthält nach dem oben beschriebenen Download die für den Client notwendigen Patches und Scripte. Das wird nach /var/lib/opsi/depot/wsusoffline kopiert.

Erfolgreich getestet:

DosInAnIcon_connect
; Share mit den Patches einbinden.
net use k: \\server\wsusshare geheim /user:server\user /persistent:no

DosInAnIcon_update
; Hier wird die Updatefunktion aufgerufen.
;Ob die Optionen aus der Variable ausgelesen werden können, hab ich noch nicht getestet
; Ob Optionen überhaupt funktionieren hab ich nicht getestet.
;
; Wechsel auf das eingehangene Netzlaufwerk
k:
; Aufruf des Updatescriptes relativ zu k:
cmd\DoUpdate.cmd 
DosInAnIcon_disconnect
; aushängen des Netzlaufwerkes
net use k: /delete /yes


Nachteil

  • OPSI installiert vor dem Einloggen eines Users.
  • Das Updaten dauert immer lange, da erst geschaut wird, welche Patches eingespielt werden müssen.
  • Solange ist der Rechner blockiert.

Update als Windows Service

Damit der Computerbenutzer auch während eines Updates arbeiten kann, muss eine andere Lösung als OPSI her.

  • nssm.exe installiert unter anderem batch-files als Service. (Anscheind kein VBS)
    • https://nssm.cc/
    • Licence: NSSM is public domain. You may unconditionally use it and/or its source code for any purpose you wish.
  • Ausführung erfolgreich getestet.
  • Auch die OPSI-Installation des Services.

Installation

  • Das share \\server\wsusoffline zeigt auf wsusoffline\client
  • mssn.exe und wu.cmd werden auf den Client-PC nach c:\wsusupdate kopiert.
  • Aufruf zur Installation des Scriptes wu.cmd als Service.


OPSI-Paket wsusupdate-installer: setup.ins

; 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/en/credits/

[Actions]
requiredWinstVersion >= "4.11.4.6"
ScriptErrorMessages=off

DefVar $MsiId$
DefVar $UninstallProgram$
DefVar $LogDir$
DefVar $ProductId$
DefVar $MinimumSpace$
DefVar $InstallDir$
DefVar $ExitCode$
DefVar $myProperty$

Set $LogDir$ = "%opsiLogDir%"

; ----------------------------------------------------------------
; - 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$       = "wsusoffline-installer"
Set $MinimumSpace$    = "5 MB"
; the path were we find the product after the installation
Set $InstallDir$      = "c:\wsusupdate"
; ----------------------------------------------------------------

if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$))
        LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductId$
        isFatalError "No Space"
        ; Stop process and set installation status to failed
else
        comment "Show product picture"
        ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$


        if FileExists("%ScriptPath%\delsub32.opsiscript")

                comment "Start uninstall sub section"
                Sub "%ScriptPath%\delsub32.opsiscript"
        endif

        Message "Installing " + $ProductId$ + " ..."


        comment "Start setup program"
        ChangeDirectory "%SCRIPTPATH%"

        comment "Copy files"
        Files_install /32Bit

        comment "Install service"
        DosInAnIcon_setupservice
        DosInAnIcon_configservice
        DosInAnIcon_startservice
;       comment "Patch Registry"
;       Registry_install /32Bit




endif

[Files_install]
; Example of recursively copying some files into the installation directory:
;
 copy -s "%ScriptPath%\wsusupdate\*.*" "$InstallDir$"



[DosInAnIcon_setupservice]
cd c:\
c:\wsusupdate\nssm.exe install wsusupdate C:\wsusupdate\wu.cmd


[DosInAnIcon_configservice]
cd c:\
c:\wsusupdate\nssm.exe set wsusupdate AppExit Default Exit

[DosInAnIcon_startservice]
cd c:\
c:\wsusupdate\nssm.exe start wsusupdate

[Registry_install]
; Example of setting some values of an registry key:
;
; openkey [HKEY_LOCAL_MACHINE\Software\$ProductId$]
; set "name1" = "some string value"
; set "name2" = REG_DWORD:0001
; set "name3" = REG_BINARY:00 af 99 cd


[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
                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
                        else
                                logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$
                                isFatalError
                        endif
                endif
        endif
endif

Script wu.cmd

 net use k: \\server\wsusoffline geheim /user:server\userpass /persistent:no
 k:
 cmd\DoUpdate.cmd /msse /dotnet4

  • Hintergrund: ThrustedInstaller und wahrscheinlich sein svchost.exe ziehen 90% der CPU-Zeit und über 100 MB Ram.
  • Nach der Suche nach Updates und ihrer, wenn nötig, Installation, wird der Service für den Rest der PC-Sitzung nicht mehr benötigt.
  • Das Netzlaufwerk hängt etwas unschön im Explorer rum. Kann nicht drauf zugegriffen werden (das ist gut) und ist mit einer Fehlermeldung versehen (unschön)

Eintrag Registry. Das muss pro User gemacht werden, vielleicht geht es mit netlogon.cmd

HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

Schlüssel Explorer muss angelegt werden.

  • DWORD(32-Bit)
    • Name: nodrive
    • Wert: 64 (Für Laufwerk G, K: 1024)

Windows ist soooo einfach!

Betrieb

  • Rechner starten
  • Service wsusupdate sucht und installiert Updates auf dem Server und beendet sich für den Rest der PC-Sitzung.
  • Nach Neustart wieder Suche und , wenn nötig, Installation.


Anscheind besserer Ansatz ohne OPSI

hidden.exe nicht gefunden. Installation per login.cmd für einen normalen User nicht möglich. Verstecken einer cmd-shell ist per vbs möglich

Geht nicht

Lösung

Paket als rpm downloaden

yum install epel-release (da gibt es auch openvpn her, doppelt nützlich)
yum install xmlstarlet md5deep
rpm -i wsusoffline-8.0.0.1144-1.1 => klappt immer noch nicht, /usr/bin/groupadd fehlt.
rpm -i wsusoffline-8.0.0.1144-1.1 --nodeps

Scheint trotzdem zu funktionieren.
Windows 7 32bit Updates ziehen

 wsus-download-updates.sh w61 deu 

Wenn nicht, wsusoffline mit einem Windowsclienten durchführen


http://download.wsusoffline.net/wsusoffline954.zip => oder neuer
  • Die Daten in ein OPSI-Packet packen (siehe dass-it), sollte gehen.
  • Oder per logon.cmd ausführen.


Links


Work in Progress

BGInfo

<UserName>@<HostName>
IP: <IP Adress>
  • /accepteula impliziert die Annahme der EULA.
    • Kost nix, darf überall verwendet werden, Download nur bei MS.
    • Details: siehe EULA im Download
vim /local/samba/netlogon/logon.cmd
\\<domain-server>\tools\BGInfo \\<domain-server>\tools\conf.bgi /timer:Null /accepteula
  • smb.conf Ausschnitt
       [tools]
       comment = Kleine Helfer
       path = /local/samba/shares/tools
       guest ok = no
       writeable = no
       browseable =no
       write list = @ntadm

Remote Desktop auf Windows

Software

  • Tool der Wahl: nomachine 4
    • https://www.nomachine.com/
    • Preis: kostenlos
    • Desktop sharing möglich
    • Verbindungen von einem Clienten zu mehreren Servern gleichzeitig möglich
    • Benutzerwechsel wie für Profiländerungen notwendig möglich
    • Kein zentraler Server vorhanden / notwendig
  • Einschränkungen der "Freie" Version
    • Nur eine Verbindung zu einem Server gleichzeitig möglich.
  • Vorteile zu Version 3
    • Windows als Server möglich, dadurch wird Fernwartung von Windows-Rechnern möglich

Installation

nomachine_XXXXXX.exe /verysilent oder /silent => OPSI-Tauglich!

Die Konfig der Server auf den zu erreichenden Maschinen kann per Copy aus dem Opsi-Paket in das Installationsverzeichniss geschehen.
Ist erfolgreich getestet.

Benutzung

Benutzer wechseln

  • Auf dem Client-PC den Benutzer ausloggen
  • Folgende Tasten drücken "Strg+Alt+0", um NoMachine-Menü zu erreichen
  • Unten rechts die "Tasten" anklicken
  • "Ctl + Alt * Delete" auswählen
  • "Done" anklicken
  • Benutzer wie gewohnt wecheln

Todo

--HK 19:08, 28. Jun. 2015 (UTC)

  • Test von Verbindungen in ein Schulnetzwerk mit Verbindung
    • aus dem Büro
    • über Handy (Thetering/ Notebook)