Seite 1 von 1

Löschen mehrerer Nodes per CLI

Verfasst: Mo 28.10.2019, 11:49
von csg
Hallo zusammen,

gibt es ein fertiges Skript oder zumindest einen Tipp, wie ich über die CLI mehrere Nodes löschen kann?

Zum Beispiel:
Ich habe 100 Nodes welche mit NO_VMPC_ beginnen und dahinter einen Zähler von 1-100 für den jeweiligen individuellen Node haben.
Nun muss ich also irgendwie eine Schleife bauen, welche NO_VMPC_* löscht.
Hat das schon jemand griffbereit?

Danke und Grüße,

Jan

Re: Löschen mehrerer Nodes per CLI

Verfasst: Mo 28.10.2019, 12:44
von kennethj
Moin Jan,

Das Script muss als 'root' per SSH ausgeführt werden. (Vorher noch per 'chmod +x' ausführbar machen)

Verwenden auf eigene Gefahr: (Vorher also Config sichern) 

Code: Alles auswählen

#!/bin/sh
spcli node delete name "NO_VMPC_1"

i=1
while [ "$i" -lt "101" ]; do

  spcli node delete name "NO_VMPC_$i"
  i=$(( ${i} + 1 ))
done
Gruß

Kenneth

Re: Löschen mehrerer Nodes per CLI

Verfasst: Mo 28.10.2019, 14:53
von csg
Hi Kenneth,

danke!

Ich hatte mich wohl ungeschickt ausgedrückt.
Es ging mir nicht ausschließlich um das Löschen auf Basis der numerischen Erweiterung, sondern auch um sonstige Netzwerkobjekte, deren Namen eine bestimmte Eigenschaft aufweist.

Was meinst Du dazu (etwas dirty, ja ;-) ):

Code: Alles auswählen

#Alle bestehenden Einträge mit $NOname löschen
count=1
while [ "$count" -gt 0 ]
do 
echo "Pruefen auf Netzwerkobjekt mit String $NODELname"
var_nodeid=`spcli node get |grep "\<$NODELname.*\>" | sed 's/| /|/g' | sed 's/ |/|/g' | cut -d '|' -f 1`
if [ ! -z "$var_nodeid" ] 
 then echo "Netzwerkobjekt(e) zum Loeschen vorhanden"
 spcli node delete id "$var_nodeid"
 count=$(( $count + 1 ))
 else echo "Keine Netzwerkobjekt(e) zum Loeschen vorhanden"
 count=0
fi 
done

Viele Grüße,
Jan

Re: Löschen mehrerer Nodes per CLI

Verfasst: Di 29.10.2019, 15:20
von kennethj
Hallo Jan,

Code: Alles auswählen

var_nodeid=`spcli node get |grep "\<$NODELname.*\>" | sed 's/| /|/g' | sed 's/ |/|/g' | cut -d '|' -f 1`
Würde ich in

Code: Alles auswählen

var_nodeid=`spcli node get |grep "$NODE_NAME" | sed 's/| /|/g' | sed 's/ |/|/g' | cut -d '|' -f 1`
ändern. Natürlich müsste dann der Prefix in $NODE_NAME enthalten sein. Mit dem "\<$NODELname.*\>" wäre ich sehr vorsichtig. Mit Pech löscht er Ihnen alle Objekte.

Des Weiteren macht es an sich keinen Sinn count um +1 zu erhöhen und dann wieder auf 0 zu setzen. 
Dadurch wird die Schleife nur einmal ausgeführt

Gruß