gegeben sei /tmp/TEST.client mit folgendem Inhalt:
Code: Alles auswählen
akazie.ecobln.de
ahorn.ecobln.de
fenestrae.ecobln.de
test05.ecobln.de
Dann nehme man folgendes Skript:
Code: Alles auswählen
#!/bin/bash
cat /tmp/TEST.clients | while read LINE; do
opsi-admin -l7 -d -s method host_getObjects '' '{"id":"'${LINE}'"}';
done
Ergebnis:
Code: Alles auswählen
[...]
[6] arg[0]: method (opsi-admin|298)
[6] arg[1]: host_getObjects (opsi-admin|298)
[6] arg[2]: (opsi-admin|298)
[7] cmdline: method host_getObjects '' {"id":"akazie.ecobln.de"} 'ahorn.ecobln.defenestrae.ecobln.detest05.ecobln.de' (opsi-admin|727)
[7] cmdline: method host_getObjects '' {"id":"akazie.ecobln.de"} 'ahorn.ecobln.defenestrae.ecobln.detest05.ecobln.de' (opsi-admin|727)
[2] Traceback: (Logger.py|757)
[2] File "/usr/bin/opsi-admin", line 754, in execute
command.execute(self, self.getParams()[1:])
(Logger.py|757)
[2] File "/usr/bin/opsi-admin", line 1153, in execute
params[-1] = fromJson(params[-1], preventObjectCreation=True)
(Logger.py|757)
[2] File "/usr/lib/python2.7/dist-packages/OPSI/Util/__init__.py", line 154, in fromJson
obj = json.loads(obj)
(Logger.py|757)
[2] File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
return _default_decoder.decode(s)
(Logger.py|757)
[2] File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
(Logger.py|757)
[2] File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
raise ValueError("No JSON object could be decoded")
(Logger.py|757)
[2] ==>>> No JSON object could be decoded (opsi-admin|756)
[2] Traceback: (Logger.py|757)
[2] File "/usr/bin/opsi-admin", line 354, in main
shell.execute()
(Logger.py|757)
[2] File "/usr/bin/opsi-admin", line 759, in execute
raise RuntimeError(message)
(Logger.py|757)
[7] Calling backend_exit() on backend <BackendExtender()> (Backend.py|518)
[7] Calling backend_exit() on backend <HostControlSafeBackend(resolveHostAddress=False, maxConnections=200)> (Backend.py|518)
[7] Calling backend_exit() on backend <HostControlBackend(resolveHostAddress=False, maxConnections=200)> (Backend.py|518)
[7] Calling backend_exit() on backend <DepotserverBackend()> (Backend.py|518)
[7] Calling backend_exit() on backend <ExtendedConfigDataBackend(configDataBackend=<BackendDispatcher(dispatchConfigFile=u'/etc/opsi/backendManager/dispatch.conf', context=<BackendManager()>)>)> (Backend.py|518)
[7] Calling backend_exit() on backend <BackendDispatcher(dispatchConfigFile=u'/etc/opsi/backendManager/dispatch.conf', context=<BackendManager()>)> (Backend.py|518)
[2] Traceback: (Logger.py|757)
[2] File "/usr/bin/opsi-admin", line 1700, in <module>
main(sys.argv[1:])
(Logger.py|757)
[2] File "/usr/bin/opsi-admin", line 367, in main
raise error
(Logger.py|757)
[3] Error during execution: Failed to execute u'method host_getObjects \'\' {"id":"akazie.ecobln.de"} \'ahorn.ecobln.defenestrae.ecobln.detest05.ecobln.de\'': No JSON object could be decoded (opsi-admin|1708)
Noch schöner wird es, wenn man den opsi-admin-Befehl einfach doppelt aufruft.
Code: Alles auswählen
cat /tmp/TEST.clients | while read LINE; do
opsi-admin -l7 -d -s method host_getObjects '' '{"id":"'${LINE}'"}';
opsi-admin -l7 -d -s method host_getObjects '' '{"id":"'${LINE}'"}';
done
Er läuft in beiden Skripten dann auch nur durch akazie.ecobln.de - die anderen Schleifen/Clients werden nicht aufgerufen/ausgeführt. Oder anders gesagt - es scheint, dass die Schleife nur einmal durchläuft. Aber ist doch kein Hexenwerk, sowas... warum geht das nicht?
Code: Alles auswählen
root@foo[/1]:/usr/local/sbin # dpkg -l | grep opsi
ii opsi-atftpd 0.7.dfsg-7 amd64 advanced TFTP server - opsi version with pcre, fifo and max-blksize patches
ii opsi-configed 4.0.7.5.22-2 all OPSI config editor
ii opsi-depotserver 4.0.7.3-2 all opsi depotserver configuration package
ii opsi-linux-bootimage 20170720-1 amd64 opsi bootimage for netboot tasks.
ii opsi-utils 4.0.7.18-7 all utilites for working with opsi.
ii opsiconfd 4.0.7.14-1 all opsi configuration service
ii opsipxeconfd 4.0.7.9-1 all opsi pxe configuration daemon
ii python-opsi 4.0.7.52-1 all opsi python library
root@foo[/1]:/usr/local/sbin # cat /etc/debian_version
9.3
LG aus B
Karsten