Table of Contents
List of Figures
The Copyright of this manual is held by uib gmbh in Mainz, Germany.
This manual is published under the creative commons license
Attribution - ShareAlike (by-sa).
A German description can be found here:
http://creativecommons.org/licenses/by-sa/3.0/de/
The legally binding German license can be found here:
http://creativecommons.org/licenses/by-sa/3.0/de/legalcode
The English description can be found here: http://creativecommons.org/licenses/by-sa/3.0/
The English license can be found here: http://creativecommons.org/licenses/by-sa/3.0/legalcode
Most parts of the opsi software are open source.
The parts of opsi that are not open source are still under cofunded development. Information about these parts can be found here:
http://uib.de/en/opsi_cofunding/index.html
All the open source code is published under the GPLv3 and is moved to AGPLv3 while releasing opsi 4.0.3:
The legally binding GPLv3 license can be found here: http://www.gnu.org/licenses/gpl.html
The legally binding AGPLv3 license can be found here: http://www.gnu.org/licenses/agpl-3.0-standalone.html
Some information around the AGPL: http://www.gnu.org/licenses/agpl-3.0.en.html
For licenses to use opsi in the context of closed software please contact the uib gmbh.
The names opsi, opsi.org, open pc server integration and the opsi logo are registered trade marks of uib gmbh.
The opsi Service Release 4.0.3 comes with a whole bunch of new features and improvements. Here comes a survey:
Support for the following distributions:
The installation guide is to be found in the opsi-getting-started manual.
Discontinuation at end of March 2013 for the support for:
opsi-client-agent
opsi server components
Windows Netboot products
For further details please refer to the opsi-v403-releasenotes and the revised opsi manuals.
In this chapter the discontinuations are listed. These distribution versions by different reasons are not supported by opsi anymore.
With this feature pack release the official support for Python 2.4 is discontinued. This regards the Python 2.4 distributions: Redhat 5 and Centos 5. The repositories concerned will be closed at the end of March 2013. The final packet versions will be available from the archive of download.uib.de. For opsi installations concerned we recommend to upgrade to the new distribution versions, which still are supported.
The following Linux distribution versions are not supported anymore because of insufficient maintenance by the distributor:
These repositories will be closed at the end of March 2013. For installations based on these distribution versions we strongly recommend an upgrade of the operating system. But before doing so, please check whether your chosen version to upgrade to is supported by opsi.
The products contained within this Release in several parts are dependent from each other. So install the Release as a packet and don’t try to install just some parts of it.
At first you should update the server and then the opsi products.
The installation does not require any special procedures and can be done as part of the standard update of the server and the opsi products.
As the first step you should create a server update and then install the opsi products. This is to be done with the opsi-product-updater:
opsi-product-updater -i -vv
In case you have a multi depot installation, first upgrade the config server, then the depot servers..
Since opsi 4.0.3 we removed the dependencies of the opsi server packages to the packages dhcp server and java runtime environment.
We made these changes, because most of our customers run an other dhcp server and don’t need to run the opsi-configed directly on the opsi server.
This leads to an automatic uninstall of these packages if they were installed before by the opsi dependency.
If you need one of these packages on your opsi server, you should check and (if needed) reinstall these packages after upgrade to opsi 4.0.3.
Usually the client installation of opsi software packets is started when booting the client. So the user has to wait for the installation to finish, before the user logon is granted. So it might be useful to do most of the software installation when the client is going to shut down.
The opsi module for installation on shutdown is providing that feature. Selected clients can be configured to do installation on shutdown.
The opsi module Installation on Shutdown can be used for clients with Windows XP or above. The required components are part of the opsi packet opsi-client-agent. Currently this module is a cofunding project. So it requires a special modules file to unlock this feature. For further details on cofunding projects see Section 12.1.1, “Activating licensed extension modules” and the weblink opsi cofunding projects.
The packet opsi-client-agent must be version 4.0.2.3-2 or above with an opsiclientd
version 4.0.75 or above.
Some technical restrictions and constraints are the following cases:
The required components for Installation on Shutdown are part of the current opsi-client-agent
packet. For unlocking it, a valid modules
file must be purchased and copied to the server.
Then Installation on Shutdown can be configured for suitable clients (see Section 5.2, “Preconditions for Installation on Shutdown”) by setting the opsi-client-agent
product property on_shutdown_install=on
and setting opsi-client-agent=setup
.
This is it. All the rest of the configuration is done by the opsi-client-agent
packet during setup.
The Installation on Shutdown is done in addition to the Installation at Startup. Usually this is the best way to ensure that the clients always have the current security updates installed, even if the client was off for a long time (when the user was on holiday for instance).
If required, the standard Installation on Startup can be disabled, see Section 5.4.5, “Special Configuration of Installation on Shutdown”. Installations in progress are continued anyway, which is triggered by the precondition installation_pending
.
The Windows system during system shutdown does not distinguish shutdown from reboot. The Installation on Shutdown is started in both cases and it is not possible, to distinguish them during the installation process. Also it is not possible to transform a system shutdown into a reboot (or vice versa). So in case of a system shutdown, any further installations are continued at the next system startup.
The following explanations are for understanding the technical design and the interactions of the components in case of special configurations or error states. Usually all of the required configurations are done by the opsi-client-agent
packet.
The Installation on Shutdown module is based on several system components. A major part is the Windows shutdown script mechanism per Local Group Policy. Shutdown scripts allow to run tasks at shutdown when the user is logged off already, but all the system services are still available.
The shutdown script performs an opsi task, which triggers the opsi system service opsiclientd to start the installation process and waits for the task to end. So the system waits for the installation process to finish and then shuts down. During the shutdown handling, the Windows system does not distinguish shutdown from reboot, so the installation is triggered in either case.
The opsi client service opsiclientd is configured for processing the action on_shutdown
, which is starting the installation process. In case of required reboots, the precondition installation_pending
allows the process control. If during an installation a reboot is required before continuing the installation, the precondition installation_pending
leads to continuing the installation at the next system startup (even if installation at gui_startup
is disabled). During the state of installation_pending
, no further Installations on Shutdown are triggered, otherwise there would be no reboot between Installation on Startup and Installation on Shutdown. So until the current installation has completed, the Installation on Shutdown is suppressed by the setting event_on_shutdown{installation_pending}
.
The following chapter gives some further details on the Installation on Shutdown.
By special registry entries, the Local Group Policy is configured to perform an opsi shutdown skript, which triggers the installation process. The registry entries used by opsi-client-agent
are the same as can be done by using the Group Policy-Editor gpedit.msc
.
This is how to configure the shutdown script by using the Group Policy-Editor gpedit.msc
:
To configure the system to wait for the completion of the installation process, the maximum waittime is set to infinite (0 seconds):
The opsi shutdown script doinstall32.cmd
/ doinstall64.cmd
changes the working directory and triggers the on_shutdown event:
echo Start opsi product installation ... cd "%ProgramFiles%\opsi.org\opsi-client-agent" opsiclientd_shutdown_starter.exe on_shutdown
For 64Bit systems:
echo Start opsi product installation ... cd "%ProgramFiles(x86)%\opsi.org\opsi-client-agent" opsiclientd_shutdown_starter.exe on_shutdown
The opsiclientd_shutdown_starter
triggers the installation and waits for completion, so the system shutdown is delayed while the opsiclientd_shutdown_starter
task is running.
These registry entries are set by the opsi-client-agent
packet and start the execution of the shutdown script doinstall32.cmd on WinXP / 32Bit clients. For 64Bit-systems the script name is doinstall64.cmd
(instead of doinstall32.cmd
).
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown\0] "GPO-ID"="LocalGPO" "SOM-ID"="Local" "FileSysPath"="C:\\WINDOWS\\System32\\GroupPolicy\\Machine" "DisplayName"="opsi shutdown install policy" "GPOName"="opsi shutdown install policy" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown\0\0] "Script"="C:\\Programme\\opsi.org\\opsi-client-agent\\on_shutdown\\doinstall32.cmd" "Parameters"="" "ExecTime"=hex(b):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\Scripts\Shutdown\0] "GPO-ID"="LocalGPO" "SOM-ID"="Local" "FileSysPath"="C:\\WINDOWS\\System32\\GroupPolicy\\Machine" "DisplayName"="opsi shutdown install policy" "GPOName"="opsi shutdown install policy" [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System\Scripts\Shutdown\0\0] "Script"="C:\\Programme\\opsi.org\\opsi-client-agent\\on_shutdown\\doinstall32.cmd" "Parameters"="" "ExecTime"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system] "MaxGPOScriptWait"=dword:00000000
These are the registry entries for Win6 64Bit (Vista / Win7 / Win8):
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown\0] "GPO-ID"="LocalGPO" "SOM-ID"="Local" "FileSysPath"="C:\\WINDOWS\\System32\\GroupPolicy\\Machine" "DisplayName"="opsi shutdown install policy" "GPOName"="opsi shutdown install policy" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown\0\0] "Script"="C:\\Programme\\opsi.org\\opsi-client-agent\\on_shutdown\\doinstall32.cmd" "Parameters"="" "ExecTime"=hex(b):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\Scripts\Shutdown\0] "GPO-ID"="LocalGPO" "SOM-ID"="Local" "FileSysPath"="C:\\Windows\\System32\\GroupPolicy\\Machine" "DisplayName"="opsi shutdown install policy" "GPOName"="opsi shutdown install policy" "PSScriptOrder"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\Scripts\Shutdown\0\0] "Script"="C:\\Program Files (x86)\\opsi.org\\opsi-client-agent\\on_shutdown\\doinstall64.cmd" "Parameters"="" "IsPowershell"=dword:00000000 "ExecTime"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system] "MaxGPOScriptWait"=dword:00000000
For managing the Installation on Shutdown, the opsi client service opsiclientd has got entries for the special Event on_shutdown in the configuration file opsiclientd.conf. These are the relevant entries:
[event_gui_startup] active = True [event_gui_startup{installation_pending}] active = True [event_on_shutdown] active = False [event_on_shutdown{installation_pending}] active = False [precondition_installation_pending] installation_pending = true
The precondition installation_pending
is set to true by the opsiclientd while an installation is in progress and set to false when the installation is finished. So an unfinished installation, which needs to proceed the installation after a reboot, can be detected by the precondition installation_pending
still being true at the end of the script processing.
When the event_on_shutdown
section is set to False (which is the default), the Installation on Shutdown is disabled.
This is the configuration for a client with activated Installation on Shutdown:
[event_gui_startup] active = True [event_gui_startup{installation_pending}] active = True [event_on_shutdown] active = True [event_on_shutdown{installation_pending}] active = False [precondition_installation_pending] installation_pending = true
So the only difference is the event_on_shutdown section being True:
[event_on_shutdown] active = True.
The setting of the event_on_shutdown section is managed by the product switch on_shutdown_install
of the opsi-client-agent
packet.
The precondition precondition_installation_pending = true
indicates, that the current installation process has not completed yet. This precondition stays true, even after several Reboots, until the current installation has completed. In case of a required Reboot during the installation process, the configuration [event_gui_startup{installation_pending}] active = True
triggers the installation to continue at the next system startup. This configuration may not be changed, because the current installation has to be completed, before the user is allowed to logon.
Also the configuration [event_on_shutdown{installation_pending}] active = False
must keep its value False at all times, because the installation has to continue AFTER the next reboot. Otherwise there wouldn’t be a reboot between Installation at Startup and Installation on Shutdown.
As soon as the installation process has completed, the precondition is set to installation_pending = false
, so the Installation on Shutdown is active again.
For activating the Installation on Shutdown, just a valid modules file is required, as described in Section 5.3, “Activating Installation on Shutdown”. Then the Shutdown on Install can be activated by setting the product switch on_shutdown_install
of the opsi-client-agent
packet.
As the default, the Installation at startup is also active. So it is ensured, that the client always has the current software. Even if it had been offline for a while (when the user returns from holiday, for instance).
The Installation at startup can be turned off, if desired. The configuration of the opsi-client-agents can be done by the web service (see: Section 12.1.2, “Configuration by the webservice (host parameter)”), therefore an host parameter should be created:
opsiclientd.event_gui_startup.active
(boolean, default: true
)
By this host parameter the gui_startup event can be configured for a client. The host parameter can be created by opsi-configed or opsi-admin.
For creating the host parameter with opsi-admin, execute the following command on the opsi-config-server:
opsi-admin -d method config_createBool opsiclientd.event_gui_startup.active "gui_startup active" true
The default value true is the default value as it comes with the default opsiclientd.conf
.
To disable the Installation at Startup for a client, the host parameter can be configured like this:
opsiclientd.event_gui_startup.active
: false
Be careful with disabling the Installation on startup, for there is a high risk of outdated software. Never change the settings of the sections with the precondition installation_pending. The default settings are required to manage the installation process.
For setting the host parameter with opsi-admin, execute the following command on the opsi-config-server (in this example for a client with the opsi-host-Id myclient.domain.de
):
opsi-admin -d method configState_create opsiclientd.event_gui_startup.active myclient.domain.de false
With the configuration event_gui_startup=false there is no connect to the opsi-config-server and no software installation at startup. With the exception of installations in progress, which continue at system startup. This is managed by the configuration event_on_shutdown{installation_pending}
. So do not change the settings for sections with the precondition installation_pending, for they are important for products, that request a reboot during installation.
During Install on Shutdown a logfile is written:
C:\opsi.org\tmp\doinstall.log
with, in case of success, has the following content:
doinstall32.cmd started The current date is: .Tue 02/012/2013 Enter the new date: (mm-dd-yy) Backend connected. modules: passed first checkpoint. Modules file signature verified (customer: my company) Check completed. Event fired Task completed.
This Logfile is rewritten each time and can be checked in case of a malfunction.
The opsi feature SilentInstall-provides for administrators the ability to install software on a client without the logged on user being disturbed. This chapter describes the characteristics of this feature and offers a guideline for configuring this new installation method.
For using this feature, opsi version 4.0.3. or above is required. Basically the opsi-client-agent version 4.0.3.1 or above is required.
The SilentInstall method offers the ability to install a pre-defined list of products on a client, without the user having to interrupt his work. Unlike the installation by the onDemand-Event (push Installation), the SilentInstall method does not display anything on the user desktop.
All displays are suppressed and are not to be seen on any desktop. Of course this feature bears some risk. In case of a problem, e.g. a syntax error of the opsi-winst script, there is no way to interact with the installation process, for no dialog windows are shown. So this would result in the opsi-winst and so the Event processing not coming to an end, and so no more events will be executed. To avoid this "Worst case scenario", the maximum installation time is limited by a timeout configuration. This timeout value might have to be adapted in case of an extended installation. For further information, see the configuration chapter.
Another very important ability of this feature is the predefined list of products to be installed silently. Contact to the service is established, but different from the usual procedure, the ActionRequests given by the service are ignored. The list of software to be installed is defined by an opsi-client-agent configuration. The "setup" action will be executed for all the products on this list and they do not have to be set to setup. As usual after processing the setup script, also the update script will be executed, if there is one. No product dependencies will be resolved.
So either no products containing product dependencies should be installed by the SilentInstall feature, or all the products from the dependency list must be added to the SilentInstall product list. As usual the installation process is completed by sending the installation status and installation logfiles to the service.
In summary it is recommended to use the SilentInstall only for products, that meet the following requirements:
Within the default configuration swaudit and hwaudit are installed by this method. The inventory products of opsi meet all the requirements above and so are applicable for this method. With the default configuration the opsi hard- and software inventory are generated on demand, without the need to set the setup action request with the opsi-configed. With this method the inventory information can be generated in real-time operation. Also applicable would be any configuration products, that perform automatic repairs or restore client patches.
This event will not be triggered automatically like other events. So there are two ways to perform this event.
The first way is to trigger the event from the opsi webservice, like e.g.:
opsi-admin -d method hostControl_fireEvent silent_install client.domain.local
So this command is scriptable and can be used within scripts that can be combined with an at-job to plan the execution of the event.
As an alternative the event can be triggered by a timer event after a certain amount of time. The default configuration for this event is 6 hours. This value presumes, that a work station usually is in use for 8 hours. So the event would be executed once a day after six hours of uptime. For mor information on configuring and activating this event see the following configuration chapter.
This chapter is about the default configuration of this feature. The default opsiclientd.conf has got a SilentInstall event. This listing just shows the important options:
Standard Event SilentInstall:
[event_silent_install] process_shutdown_requests = false action_processor_productIds = swaudit,hwaudit action_processor_command = %action_processor.command% /productlist %action_processor_productIds% /silent action_processor_desktop = winlogon action_processor_timeout = 300
action_processor_productIds
process_shutdown_request = false
action_processor_command
action_processor_desktop
action_processor_timeout
The second event is the Timer Event, which triggers the event after a certain amount of time:
Default Timer Event for SilentInstall
[event_timer_silentinstall] super = silent_install type = timer active = false interval = 21600
super
type
active
interval
Also the SilentInstall event could be triggered by another system event detected by an WMI request. Therefore a wql option can be specified. How to specify a wql option is to be seen in the event_net_connection section. If the wql option is used, the event should be set to active = false as default, so it can be activated later on when requested.
To trigger the event by a timer, usually it only needs to set a host parameter. Therefore at first a default configuration has to be created. In this case it is sufficient to activate the Timer Event.
To create the standard option the following host parameter are to be created by the opsi-admin. Also this configuration could be created by the opsi-configed:
opsi-admin -d method config_createBool opsiclientd.event_timer_silentinstall.active "event_timer_silentinstall active" false
So at first this event is disabled for all the clients. Then the event can be enabled for single clients:
opsi-admin -d method configState_create opsiclientd.event_timer_silentinstall.active silentclient.domain.de true
To define the products to be installed, the following entry must be set. If for instance instead of swaudit and hwaudit the product firefox shall be installed, the entries should be created as described above:
opsi-admin -d method config_createUnicode opsiclientd.event_silent_install.action_processor_productIds "event_silent_install productIds" "swaudit,hwaudit"
With this option as the default for all clients the product list for the Silent Install Event is set to swaudit and hwaudit. To change the product list for a single client into firefox execute the following command:
opsi-admin -d method configState_create opsiclientd.event_silent_install.action_processor_productIds client.domain.de "firefox"
As you can see, the product list can be different for each client.
(available since opsi-client-agent version 4.0.2.3)
The custom directory can be used to protect your configuration changes during opsi-client-agent updates: (/opt/pcbin/install/opsi-client-agent/files/opsi/custom
). During server updates of opsi-client-agent the whole custom directory will be saved and restored after the update, so that your custom changes will persist.
custom/cfg/config.ini
cfg/config.ini
. Except of the values for pckey
and bootmode
, which never are picked from that file. Add to your custom config file only those values, that are different from the default settings.
custom/winstskin/*.*
C:\Program Files (x86)\opsi.org\opsi-client-agent\custom\winstskin
directory during installation of the opsi-client-agent on the client. This winstskin
directory, if it exists, since opsi-winst Version 4.11.3.4. is the preferred one. It must contain all required winstskin files and configurations, for the content of the default directory is ignored.
custom/notifier/*.*
C:\Program Files (x86)\opsi.org\opsi-client-agent\notifier
directory during installation of the opsi-client-agent and overwrite the files from the server side files/opsi/dist/notifier/
directory.
custom/opsiclientd.conf
custom/opsiclientd.conf
will be copied to the clients C:\Program Files (x86)\opsi.org\opsi-client-agent\opsiclientd
directory during installation of the opsi-client-agent and overwrites the default opsiclientd.conf from the server side files/opsi/dist/opsiclientd/
directory. So the custom opsiclientd.conf must contain all the required configuration entries.opsiclientd.conf
is not recommended. To customize your client configuration, use the host parameter configuration for single features as described in the opsi-client-agent chapter. Using a custom opsiclientd.conf
is applicable for very complex configurations only. By using a custom opsiclientd.conf
, after each update of opsi-client-agent it is required to check the server default file files/opsi/dist/opsiclientd/opsiclientd.conf
for changes to be patched to your custom opsiclientd.conf
.Some manufacturers use model identifier codes including special characters, which cannot be used in file and directory names. For instance a model identification : "5000/6000/7000". The slash cannot be used for valid directory names. Therefore since the third service release opsi 4.0.3 the following special characters: < > ? " : | \ / * internally will be replaced by an underscore _ . So the example above will be changed to : "5000_6000_7000" and the directory will be assigned automatically, although the information in the hardware inventory is different.
The default behaviour of opsi4.0 methods when called without any parameter is, that it matches all existing objects. For instance the command "host_getObjects" without any parameters results in returning all existing host objects. This could be dangerous when using the HostControl-Backend. Especially with commands like: "hostControl_shutdown" and "hostControl_reboot". In these cases calling the method without any parameter would shutdown or reboot all the clients.
Therefore service release opsi 4.0.3 comes with two changes:
opsi-admin -d method hostControlSafe_shutdown *
So for the reasons mentioned above, we recommend to use the hostControlSafe methods at the console. Especially if you have little experience in using the service methods.
The following descriptions are excerpts from the opsi-winst manual.
"(…)" marks the omitted parts.
Since version 3.6 the opsi-winst GUI can be customized. The elements for customizing are to be found in the winstskin subdirectory of the opsi-winst directory. The configuration file for customization is skin.ini
.
Since version 4.11.3.5 the opsi-winst searches the skin directory in the following order (first directory with a skin.ini
to be found wins):
%WinstDir%\..\custom\winstskin
%WinstDir%\winstskin
With the Command SetSkinDirectory
the SkinDirectory to be used can be defined in the script. If the path specified is empty or not valid, the default path will be used.
Example:
SetSkinDirectory "%ScriptPath%\testskin" sleepseconds 1 SetSkinDirectory ""
(…)
SetConfidential
<secret string>Example:
message "SetConfidential" SetConfidential "forbidden" comment "This is a forbidden string" comment "shown in the should be in the log file: This is a ***(confidential)*** string"
Log:
message SetConfidential comment: This is a ***(secret)*** string comment: should be in the log file: This is a ***(confidential)*** string
opsi-winst scripts do not have a special type of variables for numbers. But there are some functions to help calculating with numbers.
calculate(
<str>)
+
, -
, *
, /
and round brackets (
,)
.isNumber
.Example:
set $ConstTest$ = "0" set $CompValue$ = calculate("-1+1") if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $ConstTest$ = "1" set $CompValue$ = calculate("0+1") if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $ConstTest$ = "-1" set $CompValue$ = calculate("0-1") if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $string1$ = "5" set $string2$ = "5" set $ConstTest$ = "25" set $CompValue$ = calculate($string1$+"*"+$string2$) if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $string1$ = "5" set $string2$ = "5" set $ConstTest$ = "1" set $CompValue$ = calculate($string1$+"/"+$string2$) if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $string1$ = "5" set $string2$ = "0" set $ConstTest$ = "" comment " expecting devision by zero error and empty string result" set $CompValue$ = calculate($string1$+"/"+$string2$) if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $string1$ = "9" set $string2$ = "10" set $ConstTest$ = "1" comment "result 0.9 is rounded to 1 " set $CompValue$ = calculate($string1$+"/"+$string2$) if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $string1$ = "10" set $string2$ = "9" set $ConstTest$ = "1" comment "result 1.1111 is rounded to 1 " set $CompValue$ = calculate($string1$+"/"+$string2$) if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $string1$ = "5" set $string2$ = "5" set $ConstTest$ = "55" comment " rule * before +" set $CompValue$ = calculate($string1$+"+"+$string2$+"*10") if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $string1$ = "5" set $string2$ = "5" set $ConstTest$ = "100" comment "brackets before rule * before + " set $CompValue$ = calculate("("+$string1$+"+"+$string2$+")*10") if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $string1$ = "5" set $string2$ = "ten" set $ConstTest$ = "" comment "invalid char error" set $CompValue$ = calculate($string1$+"*"+$string2$) if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $string1$ = "5" set $string2$ = "" set $ConstTest$ = "25" comment "5* is interpreted as 5*5" set $CompValue$ = calculate($string1$+"*") if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $string1$ = "5" set $string2$ = "" set $ConstTest$ = "10" comment "5+ is interpreted as 5+5" set $CompValue$ = calculate($string1$+"+") if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $string1$ = "nothing" set $string2$ = "foo" set $ConstTest$ = "" comment "invalid char error" set $CompValue$ = calculate($string1$+"*"+$string2$) if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif set $string1$ = "5" set $string2$ = "foo" set $ConstTest$ = "" comment "invalid char error" set $CompValue$ = calculate($string1$+"/"+$string2$) if ($ConstTest$ = $CompValue$) comment "passed" else set $TestResult$ = "not o.k." LogWarning "failed" endif
For more examples refer to the product opsi-winst-test at the section $Flag_calculate$ = "on"
The name of the file to be patched is passed as parameter.
Optional modifiers are:
/AllNTUserProfiles
%UserProfileDir%
, the patch section will be executed for all the profiles.[ProfileActions]
section in the Machine mode, the modifier /AllNTUserProfiles
is implied. In the Loginscript Mode the %UserProfileDir%
is interpreted as %CurrentProfileDir%
.(…)
In a LinkFolder section at first must be defined, in which virtual system folder the subsequent instructions are meant to operate. This expression defines the base folder:
set_basefolder
<virtual system folder>
Virtual system folders to be used are:
desktop, sendto, startmenu, startup, programs, desktopdirectory, common_startmenu, common_programs, common_startup, common_desktopdirectory
These folders are virtual, for it depends on the operating system (and version), what the resulting physical directory name is.
In the context of standard machine installations, only the virtual system folders starting with common_
are relevant.
The system folders desktop, sendto, startmenu, startup, programs, desktopdirectory can only be used in the context of a logged on user respectively in a userLoginScript in the context of the opsi extension user Profile Management.
(…)
The following opsi-winst-options are available:
/32Bit
c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe
calls (also when running on a 64 bit system) the 32 bit powershell.exe.
/64Bit
c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe
calls (on a 64 bit system) the 64 bit powershell.exe.
/SysNative
c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe
calls on a 64 bit system the 64 bit powershell.exe and running on a 32bit system the 32 bit powershell.exe.
Since Version 4.11.3.5, if the interpreter path contains powershell.exe, the temporary file is saved with the extension .ps1
.
/32Bit
c:\windows\system32\regedit.exe
executes (even when running on a 64 bit system) the 32 bit regedit.exe.
/64Bit
c:\windows\system32\regedit.exe
executes (running on a 64 bit system) the 64 bit regedit.exe.
/SysNative
c:\windows\system32\regedit.exe
running on a 64bit system calls the 64 bit regedit.exe and running on a 32 bit system the 32 bit regedit.exe.
Example:
Winbatch_add_reg winst /64Bit [Winbatch_add_reg] "c:\windows\system32\regedit.exe" /s "%scriptpath%\my64.reg"
/RunAsLoggedonUser
//since 4.11.3.5
This is available only in the context of userLoginScripts. The program is executed as the user, who has just logged on.
This modifier has the following limitation:
A LDAPsearch section has the following specifications:
(…)
user:
password:
(…)
(…)
Example with user / password
comment "" comment "-------------------------------------" comment "Testing: " comment "user / password" Set $LdapHost$ = "vmix7.uib.local" Set $LdapPort$ = "389" Set $LdapUser$ = "cn=Administrator,cn=Users,dc=uib,dc=local" Set $LdapPassword$ = "Linux123" Set $LdapResultType$ = "objects" Set $LdapSearchDn$ = "cn=Users,dc=uib,dc=local" Set $LdapSearchAttributes$ = "name,objectClass" Set $LdapFilter$ = "(&(objectclass=*))" markErrorNumber set $list1$ = getReturnListFromSection("ldapsearch_users /" + $LdapResultType$) if errorsOccuredSinceMark > 0 comment "failed while ldapsearch" set $TestResult$ = "not o.k." else comment "passed" endif [ldapsearch_users] targethost: $LdapHost$ targetport: $LdapPort$ user: $LdapUser$ password: $LdapPassword$ dn: $LdapSearchDn$ attributes: $LdapSearchAttributes$ filter: $LdapFilter$
For a better overview the host parameters now are devided into functional groups. The groups are displayed on the left side as a tree. The parameters and values of the selected group are displayed on the right side.
Some chapters of the Release Notes are also part of the opsi-manual and refer to other chapters of the opsi-manual. The chapters referred to are:
More information on activating licensed extension modules are to be found in the opsi-manual in the repective chapter on extension modules.
opsi-winst (4.11.3.6) stable; urgency=low
— Detlef Oertel <d.oertel@uib.de> Thu, 11 Mar 2013:15:00:00 +0200
opsi-winst (4.11.3.5) stable; urgency=low
— Detlef Oertel <d.oertel@uib.de> Thu, 05 Dec 2012:15:00:00 +0200
opsi-winst (4.11.3.4) stable; urgency=low
— Detlef Oertel <d.oertel@uib.de> Thu, 26 Oct 2012:15:00:00 +0200
opsi-winst-test (4.11.3.5-1) stable; urgency=low
— detlef oertel <d.oertel@uib.de> Wed, 16 Jan 2013 17:00:13 +0200
opsi-winst-test (4.11.3.4-1) stable; urgency=low
— detlef oertel <d.oertel@uib.de> Thu, 26 Oct 2012 17:00:13 +0200
jedit_5.0.0-3 stable; urgency=low
— detlef oertel <d.oertel@uib.de> Fri, 15 Feb 2013 16:01:53 +0200
jedit_5.0.0-2 stable; urgency=low
— rupert röder <r.roeder@uib.de> Tue, 27 Nov 2012 16:01:53 +0200
opsi-adminutils (4.0.3.-1) stable; urgency=low
— detlef oertel <d.oertel@uib.de> 15 Feb 2013
opsi-adminutils (4.0.2.1-5) stable; urgency=low
— rupert roeder <r.roeder@uib.de> 10 Jan 2013
opsi-adminutils (4.0.2.1-4) stable; urgency=low
— detlef oertel <d.oertel@uib.de> 04 Jan 2013
opsi-adminutils (4.0.2.1-3) stable; urgency=low
— detlef oertel <d.oertel@uib.de> 11 Oct 2012
opsi-adminutils (4.0.2.1-2) stable; urgency=low * swingx.jar * configed.jar 4.0.2.5.4 — bardo wolf <b.wolf@uib.de> 04 Sep 2012
opsi-adminutils (4.0.2.1-1) stable; urgency=low
opsi-template (4.0.3-1) stable; urgency=low
— detlef oertel <d.oertel@uib.de> Thu, 27 Sep 2012 16:01:53 +0200
windows (4.0.3-2) stable; urgency=low
fix in logging in real uefi mode
-- uib GmbH <info@uib.de> Thu, 11 Mar 2013 15:19:15 +0000
windows (4.0.3-1) stable; urgency=low
showdrivers.py:
— uib GmbH <info@uib.de> Thu, 14 Feb 2013 15:19:15 +0000
windows (4.0.2-2) experimental; urgency=low
— uib GmbH <info@uib.de> Mon, 27 Aug 2012 15:19:15 +0000
opsi-client-agent (4.0.3.1-2) stable; urgency=low
— Detlef Oertel <d.oertel@uib.de> Tue, 12 Mar 2013 15:00:00 +0100
opsi-client-agent (4.0.2.3-1) testing; urgency=low
opsiclientd.conf:
added new service-method for cleaning cache (WAN-Support)
-- Erol Ueluekmen <e.ueluekmen@uib.de> Wed, 14 Nov 2012 09:00:00 +0100
opsi-client-agent (4.0.2.3-2) testing; urgency=low
opsiclientd.conf:
opsiclientd:
new updatescript, which installs shutdown files if on_shutdown_active=true
-- Miriam Michaelis <m.michaelis@uib.de> Wed, 05 Dec 2012 13:00:00 +0100
opsi-client-agent (4.0.2.3-1) testing; urgency=low
opsiclientd:
new custom directory
a existing file at the depot: custom\opsiclientd.conf will overwrite the opsiconfd.conf files at the clients opsiclientd directory, which comes from the dist directory
-- Erol Ueluekmen <e.ueluekmen@uib.de> Wed, 14 Nov 2012 09:00:00 +0100
python-opsi (4.0.3.1-1) testing; urgency=low
Posix:
fix for ubuntu 12.10
-- Erol Ueluekmen <e.ueluekmen@uib.de> Tue, 05 Feb 2013 17:40:23 +0100
python-opsi (4.0.2.6-1) testing; urgency=low
Posix: getBlockDeviceControllerInfo():
rpm-spec-file: noreplace option for dispatch.conf.default in files-section
-- Erol Ueluekmen <e.ueluekmen@uib.de> Mon, 07 Nov 2012 17:34:13 +0100
python-opsi (4.0.2.5-1) testing; urgency=low
fix for resizeNTFSPartition if blockAlignmnet is used (ntfs-restore-image)
-- Erol Ueluekmen <e.ueluekmen@uib.de> Fri, 02 Nov 2012 15:00:34 +0200
opsipxeconfd (4.0.3.1-1) stable; urgency=low
this version is stable, because no changes were made, only version modified for new featurepack-release
-- Erol Ueluekmen <e.ueluekmen@uib.de> Thu, 14 Feb 2013 17:57:02 +0100
opsiconfd (4.0.3.1-1) testing; urgency=low
fixed init-Script for using global.conf
-- Erol Ueluekmen <e.ueluekmen@uib.de> Tue, 05 Jan 2013 13:15:56 +0100
opsi-utils (4.0.3.1-1) testing; urgency=low
opsi-admin: added new HostControlSafeBackend in BackendManager initialization.
-- Erol Ueluekmen <e.ueluekmen@uib.de> Tue, 12 Feb 2013 12:42:44 +0200
opsi-linux-bootimage (20130207-1) testing; urgency=low
added bc
-- Erol Ueluekmen <e.ueluekmen@uib.de> Fri, 01 Feb 2013 12:34:59 +0100
opsi-linux-bootimage (20130117-1) experimental; urgency=low
downgrade: ms-sys: 2.1.2 kernel 3.6.11
-- Erol Ueluekmen <e.ueluekmen@uib.de> Wed, 17 Jan 2013 16:25:11 +0100
opsi-linux-bootimage (20130111-1) experimental; urgency=low
kernel 3.7.1
-- Erol Ueluekmen <e.ueluekmen@uib.de> Fri, 11 Jan 2013 11:48:23 +0100
opsi-linux-bootimage (20121107-1) experimental; urgency=low
new ms-sys-version: 2.2.1
-- Erol Ueluekmen <e.ueluekmen@uib.de> Wed, 07 Nov 2012 17:51:31 +0100
opsi-linux-bootimage (20121105-1) experimental; urgency=low
python-opsi 4.0.2.6-1
-- Erol Ueluekmen <e.ueluekmen@uib.de> Mon, 05 Nov 2012 17:36:27 +0100
opsi-linux-bootimage (20121102-1) experimental; urgency=low
python-opsi 4.0.2.5-1
-- Erol Ueluekmen <e.ueluekmen@uib.de> Fri, 02 Nov 2012 15:11:43 +0100
opsi-linux-bootimage (20121024-1) unstable; urgency=low
added packages: cloop, cloop-utils, dmraid, rsync, partclone-utils, nbd-client, genisoimage
-- Erol Ueluekmen <e.ueluekmen@uib.de> Wed, 24 Oct 2012 12:57:00 +0200
opsi-linux-bootimage (20121011-1) experimental; urgency=low
Missing firmware from Broadcom-Chipsets added
-- Erol Ueluekmen <e.ueluekmen@uib.de> Thu, 11 Oct 2012 00:45:26 +0200
opsi-depotserver (4.0.3.1-1) testing; urgency=low
opsi-setup: added special files in set rights to add execute bit for these files in depot
-- Erol Ueluekmen <e.ueluekmen@uib.de> Mon, 28 Jan 2013 17:34:42 +0100
opsi4ucs (4.0.3.1-1) testing; urgency=low
opsi-setup: set executebit for special opsi files in depot
-- Erol Ueluekmen <e.ueluekmen@uib.de> Tue, 05 Feb 2013 11:07:47 +0100
opsi-configed (4.0.3.2-1) testing; urgency=low
improvement of swaudit page
-- Rupert Roeder <r.roeder@uib.de> Fri, 13 Mar 2013 12:00:00 +0200
opsi-configed (4.0.3.1-1) testing; urgency=low
log panes, software and hardware audit panes can be copied into separated frames
-- Rupert Roeder <r.roeder@uib.de> Fri, 25 Jan 2013 12:00:00 +0200
configed checks if read only version is requested and, if wanted, produces it
-- Rupert Roeder <r.roeder@uib.de> Mon, 03 Dec 2012 12:00:00 +0200
opsi-configed (4.0.2.10-1) testing; urgency=low
new logging format, included time check for service calls
-- Rupert Roeder <r.roeder@uib.de> Fri, 02 Nov 2012 12:00:00 +0200
opsi-configed (4.0.2.8-1) testing; urgency=low
read only option
-- Rupert Roeder <r.roeder@uib.de> Mon, 22 Oct 2012 12:00:00 +0200
opsi-configed (4.0.2.7-1) testing; urgency=low
reopening a saved search
-- Rupert Roeder <r.roeder@uib.de> Mon, 15 Oct 2012 12:00:00 +0200
opsi-configed (4.0.2.7-1) testing; urgency=low
more caching and less reloading actions
-- Rupert Roeder <r.roeder@uib.de> Mon, 15 Oct 2012 12:00:00 +0200