NetWorker Clients aus dem Software Inventory entfernen

NetWorker bringt eine Möglichkeit zur halb-automatisierten Verteilung von Software mit sich. Darüber kann man Updates der Software auf Clients ausrollen und muss sich dort nicht selber einloggen.
Damit man eine Übersicht darüber hat, welche NetWorker Version, bzw. welche Module man wo installiert hat, gibt es in der NMC den Reiter „Software Inventory“. Doch wenn man einen Client löscht (z.B. weil er dekommissioniert worden ist), verschwindet er leider nicht aus dem Software Inventory. Und die NMC bietet auch leider keine Möglichkeit, nicht mehr existierende Clients aus der Liste zu entfernen. Was also tun?Um das einmal zu demonstrieren:

Ich habe einen Client namens „ddp-e01-lap-093“ angelegt, danach ein Software Inventory ausgeführt und den Client anschließend gelöscht.
Wie man sehen kann, wird er nicht mehr bei den Clients aufgeführt.

clients

Aber unter Software Inventory wird er mir nach wie vor angezeigt. Leider gibt es keinen Button, um ihn zu löschen oder dergleichen.

inventory

Als weiteren Beweis sagt uns auch nsradmin, dass es den Client nicht gibt:

root@ddp-e01-vst-140:~/#: nsradmin
NetWorker administration program.
Use the "help" command for help, "visual" for full-screen mode.
nsradmin> p type: nsr client; Name:ddp-e01-lap-093
No resources found for query:
Name: ddp-e01-lap-093;
type: nsr client;
nsradmin> q
root@ddp-e01-vst-140:~/#:

Und mminfo sagt ebenfalls, dass er für den Clients keine Backups findet:

root@ddp-e01-vst-140:~/#: mminfo -avot -q "client=ddp-e01-lap-093"
6095:mminfo: no matches found for the query
root@ddp-e01-vst-140:~/#:

Wie wird man den Client jetzt also los?

Der Dell EMC NetWorker speichert sämtliche Informationen über das Software Repository in der „cpdb“.
Diese Datenbank findet man im /nsr/res/cpdb Verzeichnis unter Linux und unter Windows standardmäßig in C:\Program Files\EMC NetWorker\nsr\res\cpdb .

Öffnen kann man die Datenbank mit nsradmin -d <Pfad>

Also in meinem Fall unter Linux: nsradmin -d /nsr/res/cpdb

Dort gibt es den Type „NSR Installed Software“, unter dem sämtliche Informationen über die installierte Software gespeichert ist.
Dagegen lässt man ein Query laufen, welches man wie bei nsradmin üblich auch auf einen bestimmten Client filtern kann. Alternativ kann man den Filter aber auch weglassen, was dann allerdings zur Folge hat, dass man danach alle Clients aus dem Inventory löscht und diese dann noch einmal komplett neu inventarisieren muss.
In meinem Fall möchte ich dies nicht, sondern möchte nur den einen betroffenen Client löschen.

root@ddp-e01-vst-140:~/#: nsradmin -d /nsr/res/cpdb
NetWorker administration program.
Use the "help" command for help, "visual" for full-screen mode.
nsradmin> p type:NSR Installed Software;name: ddp-e01-lap-093
type: NSR Installed Software;
cluster: No;
description: ;
installation path: ;
installation status: installation ok;
installation time: 24;
job ID: 0;
name: DDP-E01-LAP-093;
OS name: Windows NT Workstation on Intel;
OS platform: win_x64;
package name: Language Packs;
package size (bytes): 0;
package version: 9.2.1.3;
parent job ID: 0;
patch base version: ;
platform package name: NwLangPacks;
platform package version: 9.2.1.3;
previous package name: ;
previous package version: ;
product: NetWorker;
version: 9.2.1.3;

type: NSR Installed Software;
cluster: No;
description: ;
installation path: ;
installation status: installation ok;
installation time: 24;
job ID: 0;
name: DDP-E01-LAP-093;
OS name: Windows NT Workstation on Intel;
OS platform: win_x64;
package name: Client;
package size (bytes): 0;
package version: 9.2.1.3;
parent job ID: 0;
patch base version: ;
platform package name: NwClient;
platform package version: 9.2.1.3;
previous package name: ;
previous package version: ;
product: NetWorker;
version: 9.2.1.3;

type: NSR Installed Software;
cluster: No;
description: ;
installation path: ;
installation status: installation ok;
installation time: 24;
job ID: 0;
name: DDP-E01-LAP-093;
OS name: Windows NT Workstation on Intel;
OS platform: win_x64;
package name: English Language Pack;
package size (bytes): 0;
package version: 9.2.1.3;
parent job ID: 0;
patch base version: ;
platform package name: en_Feature;
platform package version: 9.2.1.3;
previous package name: ;
previous package version: ;
product: NetWorker;
version: 9.2.1.3;

type: NSR Installed Software;
cluster: No;
description: ;
installation path: ;
installation status: installation ok;
installation time: 24;
job ID: 0;
name: DDP-E01-LAP-093;
OS name: Windows NT Workstation on Intel;
OS platform: win_x64;
package name: Firewall Configuration;
package size (bytes): 0;
package version: 9.2.1.3;
parent job ID: 0;
patch base version: ;
platform package name: NwClientExeFirewall;
platform package version: 9.2.1.3;
previous package name: ;
previous package version: ;
product: NetWorker;
version: 9.2.1.3;

Als nächstes geben wir den Zauberbuchstaben „d“ (kurz für delete) ein. Danach werden wir für jeden einzelnen Eintrag, der als Resultat der letzten getätigten Abfrage herausgekommen ist, gefragt, ob wir den wirklich löschen wollen. D.h. wir löschen hier also tatsächlich nur die Einträge für den einen Client. Hätten wir vorher nicht den Filter gesetzt, würde er dies nun für alle Clients machen.

nsradmin> d
type: NSR Installed Software;
cluster: No;
description: ;
installation path: ;
installation status: installation ok;
installation time: 24;
job ID: 0;
name: DDP-E01-LAP-093;
OS name: Windows NT Workstation on Intel;
OS platform: win_x64;
package name: Language Packs;
package size (bytes): 0;
package version: 9.2.1.3;
parent job ID: 0;
patch base version: ;
platform package name: NwLangPacks;
platform package version: 9.2.1.3;
previous package name: ;
previous package version: ;
product: NetWorker;
version: 9.2.1.3;
Delete? y
deleted resource id 15.0.71.2.0.0.0.0.52.126.7.93.10.243.46.242(1)
type: NSR Installed Software;
cluster: No;
description: ;
installation path: ;
installation status: installation ok;
installation time: 24;
job ID: 0;
name: DDP-E01-LAP-093;
OS name: Windows NT Workstation on Intel;
OS platform: win_x64;
package name: Client;
package size (bytes): 0;
package version: 9.2.1.3;
parent job ID: 0;
patch base version: ;
platform package name: NwClient;
platform package version: 9.2.1.3;
previous package name: ;
previous package version: ;
product: NetWorker;
version: 9.2.1.3;
Delete? y
deleted resource id 14.0.71.2.0.0.0.0.52.126.7.93.10.243.46.242(1)
type: NSR Installed Software;
cluster: No;
description: ;
installation path: ;
installation status: installation ok;
installation time: 24;
job ID: 0;
name: DDP-E01-LAP-093;
OS name: Windows NT Workstation on Intel;
OS platform: win_x64;
package name: Firewall Configuration;
package size (bytes): 0;
package version: 9.2.1.3;
parent job ID: 0;
patch base version: ;
platform package name: NwClientExeFirewall;
platform package version: 9.2.1.3;
previous package name: ;
previous package version: ;
product: NetWorker;
version: 9.2.1.3;
Delete? y
deleted resource id 12.0.71.2.0.0.0.0.52.126.7.93.10.243.46.242(1)
type: NSR Installed Software;
cluster: No;
description: ;
installation path: ;
installation status: installation ok;
installation time: 24;
job ID: 0;
name: DDP-E01-LAP-093;
OS name: Windows NT Workstation on Intel;
OS platform: win_x64;
package name: English Language Pack;
package size (bytes): 0;
package version: 9.2.1.3;
parent job ID: 0;
patch base version: ;
platform package name: en_Feature;
platform package version: 9.2.1.3;
previous package name: ;
previous package version: ;
product: NetWorker;
version: 9.2.1.3;
Delete? y
deleted resource id 13.0.71.2.0.0.0.0.52.126.7.93.10.243.46.242(1)
nsradmin> q
root@ddp-e01-vst-140:~/#:

Da NetWorker allerdings die Datenbank nicht während der Laufzeit neu einließt, müssen wir jetzt leider auch den NetWorker einmal stoppen und wieder starten. Ist leider so. 🙁

Sobald der NetWorker wieder läuft, sehen wir jetzt, dass der Client nun tatsächlich verschwunden ist!

inventory_after