20.02.2024, 11:58
(Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2024, 12:00 von Manfred Aabye.)
Defekte oder nicht mehr genutzte Assets
+++ ACHTUNG: Datenbank sichern und Regionen als OAR +++
Die ganze Sache hier ist gefährlich und wenn ihr euch damit nicht auskennt, dann lasst bitte die Finger davon.
Ich habe eine Menge Assets, die keinen Namen haben und von keinem mehr genutzt werden.
Dazu habe ich mir ein kleines Bash Skript gebastelt, welches schaut, ob ein Namenloses-Asset noch im Inventar ist
und dann umbenennt, wenn dieses aber nicht mehr im Inventar eines Users zu finden ist, wird es gelöscht.
Das Ergebnis ist 1847 Assets wurden umbenannt, 53140 Assets wurden gelöscht bei mir.
Nachteil ist, alle Objekte, die als OAR hochgeladen wurden, ohne dass diese im Inventar waren, sind weg.
Also die OAR noch einmal hochladen und alles ist wieder in Ordnung.
Es wird die Logdatei "bereinigung.log" geschrieben, mit allen relevanten Informationen.
Aufruf mit debug also nur testen, was geht: "bash namenreparatur.sh Benutzername Benutzerpasswort Datenbankname true"
Aufruf ohne debug also mit Aktionen: "bash namenreparatur.sh Benutzername Benutzerpasswort Datenbankname false"
Datei namenreparatur.sh
+++ ACHTUNG: Datenbank sichern und Regionen als OAR +++
Die ganze Sache hier ist gefährlich und wenn ihr euch damit nicht auskennt, dann lasst bitte die Finger davon.
Ich habe eine Menge Assets, die keinen Namen haben und von keinem mehr genutzt werden.
Dazu habe ich mir ein kleines Bash Skript gebastelt, welches schaut, ob ein Namenloses-Asset noch im Inventar ist
und dann umbenennt, wenn dieses aber nicht mehr im Inventar eines Users zu finden ist, wird es gelöscht.
Das Ergebnis ist 1847 Assets wurden umbenannt, 53140 Assets wurden gelöscht bei mir.
Nachteil ist, alle Objekte, die als OAR hochgeladen wurden, ohne dass diese im Inventar waren, sind weg.
Also die OAR noch einmal hochladen und alles ist wieder in Ordnung.
Es wird die Logdatei "bereinigung.log" geschrieben, mit allen relevanten Informationen.
Aufruf mit debug also nur testen, was geht: "bash namenreparatur.sh Benutzername Benutzerpasswort Datenbankname true"
Aufruf ohne debug also mit Aktionen: "bash namenreparatur.sh Benutzername Benutzerpasswort Datenbankname false"
Datei namenreparatur.sh
PHP-Code:
#!/bin/bash
# Parameter überprüfen
if [ "$#" -ne 4 ]; then
echo "Usage: $0 <MySQL User> <MySQL Password> <MySQL Database> <Debug Mode (true/false)>"
exit 1
fi
# MySQL-Datenbankverbindung
MYSQL_USER="$1"
MYSQL_PASSWORD="$2"
MYSQL_DATABASE="$3"
DEBUG="$4"
# Debug-Funktion
debug() {
if [ "$DEBUG" = true ]; then
echo "Debug: $1"
fi
}
# Log-Datei
LOG_FILE="bereinigung.log"
# Verbindung zur MySQL-Datenbank herstellen und SQL-Abfrage ausführen
MYSQL_COMMAND="mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -D$MYSQL_DATABASE -e"
QUERY="SELECT id, name, assetType FROM omlrobust.assets WHERE name = ''"
RESULTS=$($MYSQL_COMMAND "$QUERY")
# Durch die Ergebnisse iterieren und Aktionen durchführen
while IFS=$'\t' read -r id name assetType; do
debug "Processing id: $id, name: $name, assetType: $assetType"
# Überprüfen, ob die ID in der Tabelle omlrobust.inventoryitems vorhanden ist
ID_EXISTS_QUERY="SELECT COUNT(*) FROM omlrobust.inventoryitems WHERE assetID = '$id'"
ID_EXISTS_RESULT=$($MYSQL_COMMAND "$ID_EXISTS_QUERY" | tail -n 1)
if [ "$ID_EXISTS_RESULT" -eq 0 ]; then
debug "Asset with id $id does not exist in omlrobust.inventoryitems. Deleting..."
if [ "$DEBUG" != true ]; then
DELETE_QUERY="DELETE FROM omlrobust.assets WHERE id = '$id'"
$MYSQL_COMMAND "$DELETE_QUERY"
echo "Deleted asset with id $id from omlrobust.assets." >> "$LOG_FILE"
else
echo "DEBUG MODE: Asset with id $id would have been deleted from omlrobust.assets." >> "$LOG_FILE"
fi
else
debug "Asset with id $id exists in omlrobust.inventoryitems. Renaming..."
if [ "$DEBUG" != true ]; then
NEW_NAME="unknown$assetType"
RENAME_QUERY="UPDATE omlrobust.assets SET name = '$NEW_NAME' WHERE id = '$id'"
$MYSQL_COMMAND "$RENAME_QUERY"
echo "Renamed asset with id $id to '$NEW_NAME' in omlrobust.assets." >> "$LOG_FILE"
else
echo "DEBUG MODE: Asset with id $id would have been renamed to 'unknown$assetType' in omlrobust.assets." >> "$LOG_FILE"
fi
fi
done <<< "$RESULTS"
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.