User Tools

Site Tools


userspace:opsi-pkg

This is an old revision of the document!


I created a script that permit to control opsi package installation through command line (I don't like that much GUI and Java of “opsi config editor”).
The script permits too to handle host group and product group, a thing that “opsi config editor” does not manage well I think.

The script is on github: wget https://raw.github.com/souch/opsi-misc/master/opsi-pkg and will be update/debug while I'll use it.

The script always ask before modifying something on OPSI (except when using –yes switches). And it warn and propose default action if something seems strange/not useful. So anyone can test it without too much risks :-)

Output of the usage helper:

$ opsi-pkg
usage: opsi-pkg [--help] [--quiet] [--verbose] [--debug] [--default] [--yes]
                [--no] [--force] [--fire] [--ping] [--list] [--add] [--delete]
                [--call [CALL [CALL ...]]]
                [--request {setup,uninstall,once,update,custom,userLogin,always,none}]
                [--setup] [--uninstall] [--host [HOST [HOST ...]]]
                [--package [PACKAGE [PACKAGE ...]]]
                [--host-group [HOST_GROUP [HOST_GROUP ...]]]
                [--package-group [PACKAGE_GROUP [PACKAGE_GROUP ...]]]

simple opsi package manager interface

optional arguments:
  --help                show this help message and exit
  --quiet, -q           do not print info log
  --verbose, -v         print more log
  --debug               print even more log
  --default             answer default answer to every question
  --yes, -y             answer yes to every question
  --no                  answer no to every question
  --force, -f           force doing action that does seems to be needed. e.g. install a package on a host that has already the last package installed.
  --fire                Fire the request now (i.e. push the request to the hosts).
  --ping                show hosts status (on/off)
  --list, -l            List something. Combine it with: -h, -p, -h -p, -hg, -pg.
  --add, -a             Add something. Combine it with: -hg, -pg, -hg -h, -pg -p
  --delete, -d          Delete something. Combine it with: -hg, -pg, -hg -h, -pg -p.
  --call, -c {shutdown, reboot, wakeup, delete, fire, popup "message"}
                        Launch action (push it to hosts). Combine it with: -h, -hg
  --request, -r {setup, uninstall, once, update, custom, userLogin, always}
                        Set next action (pulled by hosts) on given hosts and packages. Combine it with: -h, -hg, -p, -pg, --fire.
  --setup, -s           Shortcut for "-request setup".
  --uninstall, -u       Shortcut for "-request uninstall".
  --host [HOST [HOST ...]], -h [HOST [HOST ...]]
                        Do sthg with host. No host given means every hosts.)
  --package [PACKAGE [PACKAGE ...]], -p [PACKAGE [PACKAGE ...]]
                        Do sthg with package. No package given means every packages.
  --host-group [HOST_GROUP [HOST_GROUP ...]], -hg [HOST_GROUP [HOST_GROUP ...]]
                        Do sthg with host group
  --package-group [PACKAGE_GROUP [PACKAGE_GROUP ...]], -pg [PACKAGE_GROUP [PACKAGE_GROUP ...]]
                        Do sthg with package group

=========
Examples:

# list every packages
opsi-pkg -l -p

# list every hosts and show their up status
opsi-pkg -l -h --ping

-

# list installed packages on every computer
opsi-pkg -l -p -h

# list installed packages on tata computer
opsi-pkg -l -p -h tata

# list package font on every computer
opsi-pkg -l -p font -h

# list packages  font and office  on  tata and titi  computers
opsi-pkg -l -p font office -h tata titi

-

# list host groups
opsi-pkg -l -hg 

# create an host group "pc" without asking it
opsi-pkg -a -hg pc 'all desktop pc' -y

# create an host group "chicago" and wich has for parent 'pc' host group
opsi-pkg -a -hg chicago 'chicago network' pc

# add to host group "pc" the machines "tata, toto, and titi"
opsi-pkg -a -hg pc -h tata toto titi

# add to host group "pc" every machines of OPSI
opsi-pkg -a -hg pc -h

# delete host titi from host group "pc"
opsi-pkg -d -hg pc -h titi

# delete host group "pc"
opsi-pkg -d -hg pc

# list package groups
opsi-pkg -l -pg 

# create a package group "base" 
opsi-pkg -a -pg base 'default program'

-

# call 'hello' popup on each computer that belongs to 'pc' host group
opsi-pkg -c popup 'hello' -hg pc

# delete host tutu from OPSI
opsi-pkg -c delete -h tutu

-

# install firefox on computer tata
opsi-pkg -r setup -p firefox -h tata

# install firefox on computers that belongs to 'pc' host group even if it is 
# already install and up-to-date and push the setup now
opsi-pkg -s -p firefox -hg pc --force --fire

# install firefox on computers that belongs to 'pc' host group
opsi-pkg -s -p firefox -hg pc

# install base packages on computers that belongs to 'pc' host group
opsi-pkg -s -pg base -hg pc

# uninstall firefox on computers that belongs to 'pc' host group
opsi-pkg -u -p firefox -hg pc

# reset request on package firefox of the computer tata
opsi-pkg -r none -p firefox -h tata

======
Notes:
  OPSI cannot have same name in product group and host group

Output of list host (there are colors when using it for real).

 # opsi-pkg --list --host --ping
host                            ip             up    lastSeen              since   mac

titi                            10.0.0.104     off   2013-04-12 06:58:54   5  d    
tata                            10.0.0.200     on    2013-04-12 08:58:24   5  d    
toto                            10.0.0.170     off   2013-03-25 12:49:26   23 d    00:21:72:79:2b:80
tutu                            10.0.0.64      off   2013-02-28 09:19:50   300d    
userspace/opsi-pkg.1367834268.txt.gz · Last modified: 2021/08/23 08:37 (external edit)