<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[GridTalk.de - Linux]]></title>
		<link>https://www.gridtalk.de/</link>
		<description><![CDATA[GridTalk.de - https://www.gridtalk.de]]></description>
		<pubDate>Fri, 05 Jun 2026 06:37:16 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Dateien von der Storage-Box zum Server kopieren]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=5382</link>
			<pubDate>Thu, 19 Mar 2026 18:09:15 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=1302">Lilly</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=5382</guid>
			<description><![CDATA[Hallo ,<br />
<br />
ich habe einen Linux-Server für mein Grid bei Hetzner gemietet. Zu dem Server bekommt man eine 100 GB Storage-Box kostenlos dazu, die dann auch mit dem Server verbunden ist. Nun die Frage, wie kann man ohne einen Befehl einzugeben die Dateien hin und her kopieren. Für das Hochladen zur Strorage-Box und zum Server benutze ich FileZilla für Windows.<br />
<br />
LG Bri]]></description>
			<content:encoded><![CDATA[Hallo ,<br />
<br />
ich habe einen Linux-Server für mein Grid bei Hetzner gemietet. Zu dem Server bekommt man eine 100 GB Storage-Box kostenlos dazu, die dann auch mit dem Server verbunden ist. Nun die Frage, wie kann man ohne einen Befehl einzugeben die Dateien hin und her kopieren. Für das Hochladen zur Strorage-Box und zum Server benutze ich FileZilla für Windows.<br />
<br />
LG Bri]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Backup-Dokumentation (Borg, Linux, getrennte Server-Struktur)]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=5370</link>
			<pubDate>Fri, 20 Feb 2026 10:10:00 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=3">Dorena Verne</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=5370</guid>
			<description><![CDATA[Backup-Dokumentation (Borg, Linux, getrennte Server-Struktur)<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.gridtalk.de/images/attachtypes/image.gif" title="JPEG Image" border="0" alt=".jpeg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=11865" target="_blank" title="">Dorena-Lappi-2.jpeg</a> (Größe: 64,84 KB / Downloads: 92)
<!-- end: postbit_attachments_attachment --><br />
<br />
In den letzten Wochen habe ich mein Backup-System grundlegend überarbeitet und neu strukturiert.<br />
Ziel war eine saubere, automatisierte Lösung mit klarer Trennung zwischen Produktionsserver und externem Backup-Server.<br />
<br />
Das System basiert auf:<br />
	•	verschlüsselten Borg-Backups<br />
	•	getrennten Backup-Skripten für Dateien und Datenbanken<br />
	•	zeitlich versetzten Cron-Jobs<br />
	•	klar definierten Aufbewahrungsregeln<br />
	•	vollständig dokumentierten Wiederherstellungsszenarien<br />
<br />
Die Dokumentation ist bewusst allgemein formuliert und nicht auf ein spezielles Grid oder eine konkrete Datenbank zugeschnitten.<br />
Sie kann als Anleitung für andere Administratoren dienen, die eine ähnliche Struktur umsetzen möchten.<br />
<br />
Enthalten sind unter anderem:<br />
	•	komplette Einrichtungsschritte (Repository, SSH, Passphrase-Automation)<br />
	•	Beispiel-Skripte für tägliche und wöchentliche Backups<br />
	•	Retention-/Prune-Strategien<br />
	•	Log- und Kontrollmechanismen<br />
	•	Restore einzelner Dateien<br />
	•	Datenbank-Rücksicherung<br />
	•	vollständiger Disaster-Recovery-Ablauf<br />
<br />
Die PDF ist zweisprachig (Deutsch/Englisch) aufgebaut.<br />
<br />
Download hier:<br />
<a href="http://dorenas-world.de/downloads/Anleitung-Borg.pdf" target="_blank" rel="noopener" class="mycode_url">Anleitung-Borg</a>]]></description>
			<content:encoded><![CDATA[Backup-Dokumentation (Borg, Linux, getrennte Server-Struktur)<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.gridtalk.de/images/attachtypes/image.gif" title="JPEG Image" border="0" alt=".jpeg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=11865" target="_blank" title="">Dorena-Lappi-2.jpeg</a> (Größe: 64,84 KB / Downloads: 92)
<!-- end: postbit_attachments_attachment --><br />
<br />
In den letzten Wochen habe ich mein Backup-System grundlegend überarbeitet und neu strukturiert.<br />
Ziel war eine saubere, automatisierte Lösung mit klarer Trennung zwischen Produktionsserver und externem Backup-Server.<br />
<br />
Das System basiert auf:<br />
	•	verschlüsselten Borg-Backups<br />
	•	getrennten Backup-Skripten für Dateien und Datenbanken<br />
	•	zeitlich versetzten Cron-Jobs<br />
	•	klar definierten Aufbewahrungsregeln<br />
	•	vollständig dokumentierten Wiederherstellungsszenarien<br />
<br />
Die Dokumentation ist bewusst allgemein formuliert und nicht auf ein spezielles Grid oder eine konkrete Datenbank zugeschnitten.<br />
Sie kann als Anleitung für andere Administratoren dienen, die eine ähnliche Struktur umsetzen möchten.<br />
<br />
Enthalten sind unter anderem:<br />
	•	komplette Einrichtungsschritte (Repository, SSH, Passphrase-Automation)<br />
	•	Beispiel-Skripte für tägliche und wöchentliche Backups<br />
	•	Retention-/Prune-Strategien<br />
	•	Log- und Kontrollmechanismen<br />
	•	Restore einzelner Dateien<br />
	•	Datenbank-Rücksicherung<br />
	•	vollständiger Disaster-Recovery-Ablauf<br />
<br />
Die PDF ist zweisprachig (Deutsch/Englisch) aufgebaut.<br />
<br />
Download hier:<br />
<a href="http://dorenas-world.de/downloads/Anleitung-Borg.pdf" target="_blank" rel="noopener" class="mycode_url">Anleitung-Borg</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Sim Start | Stop script]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=5362</link>
			<pubDate>Tue, 10 Feb 2026 05:01:44 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=5">Gau Hax</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=5362</guid>
			<description><![CDATA[Fast drei Monate habe ich jetzt wieder Opensimulator und die Server am Wickel. <br />
Heute möchte ich euch mein sim_start_stop.sh script – Projektstatus &amp; Dokumentationsanker vorstellen.<br />
<br />
Nach dem die neu aufgebauten <span style="font-weight: bold;" class="mycode_b">Debian GNU/Linux 13 (trixie)</span> und <span style="font-weight: bold;" class="mycode_b">Ubuntu Ubuntu 22.04 (jammy)</span> Server Laufen, <br />
ist jetzt <span style="font-weight: bold;" class="mycode_b">OpenSim 0.9.3 in Brid-Berlin</span> am laufen.<br />
<br />
Es hat mich einiges an zeit gekostet meine Alten scripte zu sortieren, aufzuräumen, auszumülllen, anzupassen und kann sie hier heute stabil euch zeigen. <br />
<span style="font-weight: bold;" class="mycode_b">Ach und was ganz WICHTIGES, das script nimt keine änderungen an eurern Opensim instalationen vor!!</span><br />
<br />
<span style="text-decoration: underline;" class="mycode_u">Ziel des Projekts:</span><br />
- Robustes, nachvollziehbares <span style="font-weight: bold;" class="mycode_b">Start/Stop/Status-Script</span> für OpenSim<br />
- Fokus auf Stabilität, klare Prüfungen und saubere Fehlermeldungen<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">Getestete / Zielumgebung:</span><br />
- Ubuntu (aktuelle LTS)<br />
- Debian 13<br />
- Bash-Scripting<br />
- OpenSim mit Robust (local / remote / auto)<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">Bewusste Designentscheidungen:</span><br />
- Keine Abhängigkeit von OpenSim-Konfigurationsstrings<br />
- Keine Modifikation bestehender OpenSim-Konfigurationen<br />
- Prüfungen erfolgen ausschließlich scriptseitig<br />
- PID-Prüfungen nur als Rückverifizierung, niemals allein entscheidend<br />
- Dienste müssen erreichbar sein, nicht nur „lokal laufen“<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">Robust-Prüfung:</span><br />
- Modus: local / remote / auto<br />
- Prüfung der tatsächlichen Erreichbarkeit (Ports)<br />
- OpenSim-Instanzen starten nur, wenn ein passender Robust erreichbar ist<br />
- Mehrere Robust-Instanzen (z. B. Grid, Assets, Login, Testgrid) sind berücksichtigt<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">MySQL-Prüfung:</span><br />
- Analog zur Robust-Logik umgesetzt<br />
- Local / remote / auto möglich<br />
- Keine Abhängigkeit von EstateConnectionString<br />
- Klare, explizite MySQL-Parameter im Script<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">Was ich mir von der Community wünsche:</span><br />
- Feedback zu Designentscheidungen<br />
- Erfahrungen aus anderen Systemumgebungen<br />
- Hinweise auf reale Edge-Cases<br />
- Sachliche Kritik, keine Grundsatzdebatten<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#!/usr/bin/env bash<br />
# ==========================================================<br />
# sim_start_stop.sh<br />
# ----------------------------------------------------------<br />
# OpenSimulator Start | Stop | Status Script<br />
#<br />
# Version:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.5.3<br />
# OpenSim:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.9.3<br />
# Getestet unter: Ubuntu / Debian (mit MySQL)<br />
#<br />
# Lizenz: BSD (Open Source)<br />
# Autor:&nbsp;&nbsp;Gau Hax<br />
# Mail:&nbsp;&nbsp; gauhax@vamp-berlin.de<br />
#<br />
# Zweck:<br />
#&nbsp;&nbsp;- Starten, Stoppen und Statusabfrage einzelner<br />
#&nbsp;&nbsp;&nbsp;&nbsp;OpenSimulator-Instanzen in einem Multi-Screen-Setup<br />
#<br />
# Philosophie:<br />
#&nbsp;&nbsp;- Klar, robust, admin-tauglich<br />
#&nbsp;&nbsp;- Keine Magie, keine Endlosschleifen<br />
#&nbsp;&nbsp;- Fehler sichtbar machen, nicht verstecken<br />
# ==========================================================<br />
# -----------------------------<br />
# Parameter ( Start )<br />
# -----------------------------<br />
AKTION="&#36;1"<br />
INSTANZ="&#36;2"<br />
<br />
if [[ ! "&#36;{AKTION}" =~ ^(start|stop|status)&#36; ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "Nutzung: &#36;0 start|stop|status &lt;1-20&gt;"<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit 1<br />
fi<br />
<br />
if [[ ! "&#36;{INSTANZ}" =~ ^[0-9]+&#36; ]] || (( INSTANZ &lt; 1 || INSTANZ &gt; 20 )); then<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "Instanz muss eine Zahl von 1 bis 20 sein"<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit 1<br />
fi<br />
<br />
INSTNUM="&#36;(printf "%02d" "&#36;{INSTANZ}")"<br />
INSTTAG="Inst_&#36;{INSTNUM}"<br />
<br />
STATUS_MODUS=false<br />
[[ "&#36;{AKTION}" == "status" ]] &amp;&amp; STATUS_MODUS=true<br />
<br />
abbruch_oder_status() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;[[ "&#36;{STATUS_MODUS}" == false ]] &amp;&amp; exit 1<br />
}<br />
<br />
# ----------------------------------------------------------<br />
# Statische Konfiguration ( Robust / MySql / Verzeichnisse )<br />
# ----------------------------------------------------------<br />
<br />
# --- Robust Grid Service ---<br />
ROBUST_MODE="auto"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# local | remote | auto<br />
ROBUST_HOST="127.0.0.1"&nbsp;&nbsp; # Host oder IP<br />
ROBUST_PORT_1="8002"<br />
ROBUST_PORT_2="8003"<br />
ROBUST_TAG="Robust"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # -smtag=Robust z.b.<br />
<br />
# --- MySQL ---<br />
MYSQL_MODE="auto"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # local | remote | auto<br />
MYSQL_HOST="127.0.0.1"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Host oder IP<br />
MYSQL_PORT="3306"<br />
MYSQL_DB="opensim-datenbank"&nbsp;&nbsp;&nbsp;&nbsp;# Anpassen DB<br />
<br />
# --- Basis &amp; Pfade ---<br />
#<br />
# Start Verzeichniss von OpenSimulator / Anpassen !<br />
#<br />
BASIS_VERZEICHNIS="/opt/opensim"<br />
ARBEITS_VERZEICHNIS="&#36;{BASIS_VERZEICHNIS}/bin_&#36;{INSTNUM}"<br />
<br />
# PID Verzeichniss = OpenSim.ini / Anpassen !<br />
PID_DATEI="/opt/opensim/run/pid/&#36;{INSTTAG}.pid"<br />
<br />
# Log Datein Verzeichniss<br />
LOG_VERZEICHNIS="/opt/opensim/log"<br />
LOG_DATEI="&#36;{LOG_VERZEICHNIS}/sim_start_stop&#36;{INSTNUM}.log"<br />
<br />
SCREEN_HAUPT="HAUPSCREEN-NAME"&nbsp;&nbsp;# z.b. Simss / Simss_01 !!<br />
ERWARTETER_USER="OPENSIMUNSER"&nbsp;&nbsp;# euer User vom System für Opensim!<br />
<br />
mkdir -p "&#36;{LOG_VERZEICHNIS}"<br />
<br />
# -----------------------------<br />
# Pflichtdateien – Definition<br />
# -----------------------------<br />
<br />
# Dateien direkt im Arbeitsverzeichnis (bin_XX)<br />
PFLICHT_DATEIEN_ROOT=(<br />
&nbsp;&nbsp;&nbsp;&nbsp;"OpenSim.ini"<br />
&nbsp;&nbsp;&nbsp;&nbsp;"OpenSimDefaults.ini"<br />
)<br />
<br />
# Dateien unter config-include/<br />
# Sind hier als vorlage für ... !<br />
PFLICHT_DATEIEN_CONFIG=(<br />
&nbsp;&nbsp;&nbsp;&nbsp;"GridCommon.ini"<br />
&nbsp;&nbsp;&nbsp;&nbsp;"FlotsamCache.ini"<br />
)<br />
<br />
# Regions-Datei (Sonderpfad)<br />
# Ich gehe hier davon aus, das script, es es mindestens<br />
# eine "Regions.ini" Datei für eine Inst hat<br />
REGION_DATEI="&#36;{ARBEITS_VERZEICHNIS}/Regions/Regions.ini"<br />
<br />
# -----------------------------<br />
# Pflicht Datein Prüfung (erweiterung)<br />
# ERWEITERUNG !!! in vorbereitung !<br />
# -----------------------------<br />
## PFLICHT_DATEIEN_CONFIG+=( "NeueDatei.ini" )<br />
<br />
# -----------------------------<br />
# Farben (Konsole)<br />
# muss ja schön aussehen<br />
# Danke an Manfred Aabye für die Inspiration<br />
# -----------------------------<br />
## C_RESET="&#92;033[0m"<br />
## C_INFO="&#92;033[1;34m"<br />
## C_WARN="&#92;033[1;33m"<br />
## C_ERR="&#92;033[1;31m"<br />
## C_OK="&#92;033[1;32m"<br />
C_RESET="&#92;033[0m"<br />
C_INFO="&#92;033[1;33m"<br />
C_WARN="&#92;033[33;1m"<br />
C_ERR="&#92;033[31m"<br />
C_OK="&#92;033[32m"<br />
<br />
# -----------------------------<br />
# Logging<br />
# Console mit Farbe, Datei mit Datum und Uhrzeit<br />
# -----------------------------<br />
log_console() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo -e "&#36;2[&#36;1]&#36;{C_RESET} &#36;3"<br />
}<br />
<br />
log_file() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[ &#36;(date '+%Y-%m-%d %H:%M:%S') ] [&#36;1] &#36;2" &gt;&gt; "&#36;{LOG_DATEI}"<br />
}<br />
<br />
log_info() { log_console INFO "&#36;{C_INFO}" "&#36;1"; log_file INFO "&#36;1"; }<br />
log_warn() { log_console WARN "&#36;{C_WARN}" "&#36;1"; log_file WARN "&#36;1"; }<br />
log_err()&nbsp;&nbsp;{ log_console FEHLER "&#36;{C_ERR}" "&#36;1"; log_file FEHLER "&#36;1"; }<br />
log_ok()&nbsp;&nbsp; { log_console OK "&#36;{C_OK}" "&#36;1"; log_file OK "&#36;1"; }<br />
<br />
# -----------------------------<br />
# Robust Prüfung<br />
# -----------------------------<br />
<br />
check_robust() {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_info "Robust-Prüfung gestartet (Modus: &#36;{ROBUST_MODE})"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Port-Check Funktion<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_ports() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ok=true<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for port in "&#36;{ROBUST_PORT_1}" "&#36;{ROBUST_PORT_2}"; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if timeout 2 bash -c "&lt;/dev/tcp/&#36;{ROBUST_HOST}/&#36;{port}" 2&gt;/dev/null; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Robust-Port erreichbar: &#36;{ROBUST_HOST}:&#36;{port}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Robust-Port NICHT erreichbar: &#36;{ROBUST_HOST}:&#36;{port}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok=false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[ "&#36;{ok}" == true ]]<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Prozess-Check Funktion<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_process() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local found=false<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while read -r pid; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMD="&#36;(tr '&#92;0' ' ' &lt; /proc/&#36;{pid}/cmdline 2&gt;/dev/null)"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if echo "&#36;{CMD}" | grep -qi "Robust" &amp;&amp; echo "&#36;{CMD}" | grep -q -- "-smtag=&#36;{ROBUST_TAG}"; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Robust-Prozess gefunden (PID=&#36;{pid})"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;found=true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done &lt; &lt;(pgrep -f dotnet || true)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[ "&#36;{found}" == true ]]<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Modus-Auswertung<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;case "&#36;{ROBUST_MODE}" in<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_info "Robust LOCAL: Prozessprüfung"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_process || {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Lokaler Robust läuft nicht"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remote)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_info "Robust REMOTE: Portprüfung"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_ports || {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Remote Robust nicht erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_info "Robust AUTO: Erkennung local / remote"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if check_process; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Robust lokal erkannt"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Kein lokaler Robust – prüfe Remote"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_ports || {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Robust weder lokal noch remote erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Unbekannter ROBUST_MODE: &#36;{ROBUST_MODE}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;esac<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Robust-Prüfung erfolgreich"<br />
&nbsp;&nbsp;&nbsp;&nbsp;return 0<br />
}<br />
<br />
# ----------------------------------------------------------<br />
# MySQL-Prüfung (analog Robust)<br />
# ----------------------------------------------------------<br />
check_mysql() {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_info "MySQL-Prüfung gestartet (Modus: &#36;{MYSQL_MODE})"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Port-Check Funktion<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_port() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if timeout 2 bash -c "&lt;/dev/tcp/&#36;{MYSQL_HOST}/&#36;{MYSQL_PORT}" 2&gt;/dev/null; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "MySQL-Port erreichbar: &#36;{MYSQL_HOST}:&#36;{MYSQL_PORT}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "MySQL-Port NICHT erreichbar: &#36;{MYSQL_HOST}:&#36;{MYSQL_PORT}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Lokaler Dienst-Check<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_local_service() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if mysqladmin ping --silent &gt;/dev/null 2&gt;&amp;1; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Lokaler MySQL-Dienst erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Lokaler MySQL-Dienst nicht erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Datenbank-Check<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_database() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if mysql -e "USE &#36;{MYSQL_DB};" &gt;/dev/null 2&gt;&amp;1; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "MySQL-Datenbank '&#36;{MYSQL_DB}' erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "MySQL-Datenbank '&#36;{MYSQL_DB}' nicht erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Modus-Auswertung<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;case "&#36;{MYSQL_MODE}" in<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_info "MySQL LOCAL: Dienstprüfung"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_local_service || return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remote)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_info "MySQL REMOTE: Portprüfung"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_port || return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_info "MySQL AUTO: Erkennung local / remote"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if check_local_service; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "MySQL lokal erkannt"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Kein lokaler MySQL – prüfe Remote"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_port || {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "MySQL weder lokal noch remote erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Unbekannter MYSQL_MODE: &#36;{MYSQL_MODE}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;esac<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Datenbank immer prüfen<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_database || return 1<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "MySQL-Datenbank-Prüfung erfolgreich"<br />
&nbsp;&nbsp;&nbsp;&nbsp;return 0<br />
}<br />
<br />
# -----------------------------<br />
# Benutzerprüfung<br />
# Läuft OpenSim unter dem richtigen SystemBenutzer<br />
# -----------------------------<br />
AKTUELLER_USER="&#36;(whoami)"<br />
if [[ "&#36;{AKTUELLER_USER}" != "&#36;{ERWARTETER_USER}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Script läuft als '&#36;{AKTUELLER_USER}', erwartet '&#36;{ERWARTETER_USER}'"<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Script läuft unter korrektem Benutzer '&#36;{ERWARTETER_USER}'"<br />
fi<br />
<br />
<br />
# -----------------------------<br />
# Host &amp; IP<br />
# Hier prüfen / ermitteln IP / Host<br />
# -----------------------------<br />
HOST="&#36;(hostname)"<br />
HOSTIP="&#36;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;ip route get 1.1.1.1 2&gt;/dev/null &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| awk '{for(i=1;i&lt;=NF;i++) if (&#36;i=="src") {print &#36;(i+1); exit}}'<br />
)"<br />
<br />
[[ -n "&#36;{HOSTIP}" ]] &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; log_ok "System: HOST=&#36;{HOST}, IP=&#36;{HOSTIP}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;|| log_err "System-IP konnte nicht ermittelt werden"<br />
<br />
<br />
# -----------------------------<br />
# Arbeitsverzeichnis<br />
# -----------------------------<br />
if [[ ! -d "&#36;{ARBEITS_VERZEICHNIS}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_err "Arbeitsverzeichnis fehlt: &#36;{ARBEITS_VERZEICHNIS}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Arbeitsverzeichnis vorhanden"<br />
fi<br />
<br />
# -----------------------------<br />
# Pflichtdateien prüfen<br />
# -----------------------------<br />
<br />
# Root-Dateien<br />
for datei in "&#36;{PFLICHT_DATEIEN_ROOT[@]}"; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;pfad="&#36;{ARBEITS_VERZEICHNIS}/&#36;{datei}"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [[ ! -f "&#36;{pfad}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Pflichtdatei fehlt: &#36;{pfad}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
&nbsp;&nbsp;&nbsp;&nbsp;elif [[ ! -s "&#36;{pfad}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Pflichtdatei ist leer: &#36;{pfad}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Pflichtdatei geprüft: &#36;{datei}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
done<br />
<br />
# config-include-Dateien<br />
for datei in "&#36;{PFLICHT_DATEIEN_CONFIG[@]}"; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;pfad="&#36;{ARBEITS_VERZEICHNIS}/config-include/&#36;{datei}"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [[ ! -f "&#36;{pfad}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Pflichtdatei fehlt: &#36;{pfad}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
&nbsp;&nbsp;&nbsp;&nbsp;elif [[ ! -s "&#36;{pfad}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Pflichtdatei ist leer: &#36;{pfad}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Pflichtdatei geprüft: config-include/&#36;{datei}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
done<br />
<br />
# Regions.ini<br />
if [[ ! -f "&#36;{REGION_DATEI}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_err "Regions-Datei fehlt: &#36;{REGION_DATEI}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
elif [[ ! -s "&#36;{REGION_DATEI}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_err "Regions-Datei ist leer: &#36;{REGION_DATEI}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Regions-Datei geprüft: Regions.ini"<br />
fi<br />
<br />
# -----------------------------<br />
# Regions.ini auswerten<br />
# -----------------------------<br />
REGIONS_NAME="&#36;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;awk -F'[][]' '/^&#92;[/{print &#36;2; exit}' "&#36;{REGION_DATEI}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| sed 's/^[[:space:]]*//; s/[[:space:]]*&#36;//'<br />
)"<br />
<br />
REGIONS_UUID="&#36;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;grep -E '^RegionUUID[[:space:]]*=' "&#36;{REGION_DATEI}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| awk -F '=' '{gsub(/[[:space:]]/, "", &#36;2); print &#36;2}' &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| head -n1<br />
)"<br />
<br />
[[ -n "&#36;{REGIONS_NAME}" ]] &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; log_ok "Regionsname: &#36;{REGIONS_NAME}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;|| log_warn "Kein Regionsname gefunden"<br />
<br />
[[ -n "&#36;{REGIONS_UUID}" ]] &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; log_ok "RegionUUID: &#36;{REGIONS_UUID}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;|| log_warn "Keine RegionUUID gefunden"<br />
<br />
<br />
# -----------------------------<br />
# Port-Prüfung<br />
# -----------------------------<br />
OS_PORT="&#36;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;grep -E '^[[:space:]]*http_listener_port[[:space:]]*=' &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;"&#36;{ARBEITS_VERZEICHNIS}/OpenSim.ini" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| awk -F '=' '{gsub(/[[:space:]]/, "", &#36;2); print &#36;2}' &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| head -n1<br />
)"<br />
<br />
REGION_PORTS="&#36;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;grep -E '^[[:space:]]*InternalPort[[:space:]]*=' "&#36;{REGION_DATEI}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| awk -F '=' '{gsub(/[[:space:]]/, "", &#36;2); print &#36;2}'<br />
)"<br />
<br />
[[ -n "&#36;{OS_PORT}" ]] &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; log_ok "OpenSim Listener-Port: &#36;{OS_PORT}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;|| { log_err "Kein http_listener_port gefunden"; abbruch_oder_status; }<br />
<br />
for rport in &#36;{REGION_PORTS}; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;[[ "&#36;{rport}" == "&#36;{OS_PORT}" ]] &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; log_ok "Region-Port &#36;{rport} passt" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|| log_warn "Region-Port &#36;{rport} weicht ab"<br />
done<br />
<br />
<br />
# ==========================================================<br />
# PIDFile Prüfung (OpenSim.ini) – robust (mit/ohne Anführungszeichen)<br />
#<br />
# ==========================================================<br />
PIDFILE_INI_RAW="&#36;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;grep -E '^[[:space:]]*PIDFile[[:space:]]*=' &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;"&#36;{ARBEITS_VERZEICHNIS}/OpenSim.ini" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| head -n1 &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| awk -F '=' '{print &#36;2}'<br />
)"<br />
<br />
PIDFILE_INI="&#36;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "&#36;{PIDFILE_INI_RAW}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| sed 's/^[[:space:]]*//; s/[[:space:]]*&#36;//' &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| sed 's/^"//; s/"&#36;//'<br />
)"<br />
<br />
if [[ -z "&#36;{PIDFILE_INI}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_err "PIDFile ist nicht in OpenSim.ini gesetzt"<br />
&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
elif [[ "&#36;{PIDFILE_INI}" != "&#36;{PID_DATEI}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_err "PIDFile stimmt nicht"<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_err "Gefunden : &#36;{PIDFILE_INI}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_err "Erwartet: &#36;{PID_DATEI}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "PIDFile korrekt gesetzt (&#36;{PIDFILE_INI})"<br />
fi<br />
<br />
<br />
# ==========================================================<br />
# AKTIONEN ( start | stop | status )<br />
# ==========================================================<br />
case "&#36;{AKTION}" in<br />
<br />
# -----------------------------<br />
# STATUS<br />
# Läuft komplett durch, auch bei Fehlern !<br />
# -----------------------------<br />
status)<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [[ -f "&#36;{PID_DATEI}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PID="&#36;(cat "&#36;{PID_DATEI}")"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [[ -n "&#36;{PID}" &amp;&amp; -d "/proc/&#36;{PID}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMD="&#36;(tr '&#92;0' ' ' &lt; /proc/&#36;{PID}/cmdline)"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if echo "&#36;{CMD}" | grep -q -- "-smtag=&#36;{INSTTAG}"; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Instanz läuft (PID=&#36;{PID})"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "PID aktiv, aber falscher Prozess"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Verwaiste PID-Datei gefunden"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_info "Instanz läuft nicht"<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [[ "&#36;{AKTION}" == "status" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_robust &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; log_ok "Robust-Status: OK" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|| log_warn "Robust-Status: NICHT erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_mysql &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; log_ok "MySQL-Status: OK" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|| log_warn "MySQL-Status: FEHLER"<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
# -----------------------------<br />
# START<br />
# Hier muss alles passen<br />
# ansonsten abbruch<br />
# -----------------------------<br />
start)<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Startbefehl gesendet - Anfang"<br />
#&nbsp;&nbsp;&nbsp;&nbsp;check_robust || { log_err "Start abgebrochen: Robust nicht verfügbar"; exit 1; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_mysql&nbsp;&nbsp;|| { log_err "Start abgebrochen: MySQL nicht verfügbar"; exit 1; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [[ "&#36;{AKTION}" == "start" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_robust || {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Start abgebrochen: Robust nicht verfügbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [[ -f "&#36;{PID_DATEI}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PID="&#36;(cat "&#36;{PID_DATEI}")"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [[ -n "&#36;{PID}" &amp;&amp; -d "/proc/&#36;{PID}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Instanz läuft bereits (PID=&#36;{PID})"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Verwaiste PID-Datei entfernt"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rm -f "&#36;{PID_DATEI}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ! screen -list | grep -q "&#92;.&#36;{SCREEN_HAUPT}"; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Hauptscreen '&#36;{SCREEN_HAUPT}' existiert nicht"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_info "Starte Instanz &#36;{INSTTAG} (&#36;{REGIONS_NAME})"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p 0 -X screen -t "&#36;{REGIONS_NAME}" "&#36;{INSTNUM}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;sleep 0.5<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p "&#36;{INSTNUM}" -X stuff &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cd &#36;{ARBEITS_VERZEICHNIS} &amp;&amp; dotnet OpenSim.dll -smtag=&#36;{INSTTAG}^M"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Startbefehl gesendet - Ende"<br />
&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
# -----------------------------<br />
# STOP<br />
# mit kontrolle auf sauberes ENDE<br />
# -----------------------------<br />
stop)<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [[ ! -f "&#36;{PID_DATEI}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Keine PID-Datei – Instanz läuft nicht"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;PID="&#36;(cat "&#36;{PID_DATEI}")"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_info "Stoppe Instanz &#36;{INSTTAG} (&#36;{REGIONS_NAME})"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p "&#36;{INSTNUM}" -X stuff &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alert Die Region &#36;{REGIONS_NAME} wird in 2 Minuten gestoppt.^M"<br />
&nbsp;&nbsp;&nbsp;&nbsp;sleep 0.3<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p "&#36;{INSTNUM}" -X stuff "login disable^M"<br />
&nbsp;&nbsp;&nbsp;&nbsp;sleep 120<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p "&#36;{INSTNUM}" -X stuff &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alert Die Region &#36;{REGIONS_NAME} wird in 1 Minute gestoppt.^M"<br />
&nbsp;&nbsp;&nbsp;&nbsp;sleep 45<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p "&#36;{INSTNUM}" -X stuff &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alert Die Region &#36;{REGIONS_NAME} wird in 15 Sekunden gestoppt.^M"<br />
&nbsp;&nbsp;&nbsp;&nbsp;sleep 15<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p "&#36;{INSTNUM}" -X stuff "quit^M"<br />
&nbsp;&nbsp;&nbsp;&nbsp;sleep 5<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p "&#36;{INSTNUM}" -X stuff "exit^M"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Warte Zyklus auf sauber Stop<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;for ((i=0;i&lt;20;i++)); do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep 15<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[ ! -d "/proc/&#36;{PID}" ]] &amp;&amp; break<br />
&nbsp;&nbsp;&nbsp;&nbsp;done<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [[ -d "/proc/&#36;{PID}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Prozess hängt – hartes KILL"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kill -9 "&#36;{PID}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;rm -f "&#36;{PID_DATEI}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Instanz sauber gestoppt"<br />
&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
esac<br />
<br />
exit 0</code></div></div><br />
Kurze erklärung zu dem Script.<br />
<span style="font-style: italic;" class="mycode_i">Eine genaue Erklärung, Anleitung unter</span> <a href="https://www.grid-berlin.de/sim-start-stop-script/" target="_blank" rel="noopener" class="mycode_url">Opensim Start Stop Script</a><br />
<br />
Im Kopf sind alle wichtigen angaben zu machen für Robus und MySql den Verzeichnissen und SystemUser unter dem Opemsim Läuft. <br />
Vorraussetzungen<br />
- Laufender HAUPTSCREEN<br />
  " Ein HauptScreen wird bei mir mit dem System automatsch gestartet "<br />
  <span style="font-style: italic;" class="mycode_i">" Wer kein script für ein "Hauptscreen hat, kann sich gerne melden"</span><br />
- Opensim muss auf dem System Lauffähig vorliegen<br />
  "keine nachinstalationen durch das script"<br />
- Robust muss erreichbar sein local | remote | auto<br />
- MySql ebenso local | remote | auto<br />
<span style="font-style: italic;" class="mycode_i">- eine vorhandene ( .my.cnf ) im stamverzeichniss des Opensim Users<br />
   [client]<br />
    user=opensimuser<br />
    password=suppergeheim<br />
  muss identisch zu dem User sein der in Opensimulator ist, und zugriff auf die entsprechende Datenbank haben</span><br />
<br />
Hier jetzt mal ein Beispiel zu der Gesamt Konfiguration <br />
<br />
Stamm Verzeichniss /opt/opensim<br />
Instanzen                           bin_01<br />
                                           bin_02 ... usw<br />
eine Instanz wird immer von 1 -20 aufgerufen, daraus wird an nötigen stellen 1 = 01 / 2 = 02 ... usw ist für die bin_xx für den INSTTAG  (Inst_01) und den screen (1, 2 ,3 ... ) verwendet<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Instanzlogik:</span></span><br />
- INSTNUM  = zweistellig (01–20)<br />
- INSTTAG  = Inst_XX<br />
- smtag    = <span style="font-weight: bold;" class="mycode_b">-smtag=</span>INSTTAG (zwingend)<br />
Opensim aufruf / start ( dotnet OpenSim.dll -smtag=Inst_XX ) xx ersetzt das script durch entsprechdende Nummer!<br />
(diesen <span style="font-weight: bold;" class="mycode_b">-smtag=Robust</span> könnt ihr, solltet ihr auch machen)<br />
Log Verzeichniss, ist das einziegstes was bei nicht vorhanden sein, im Arbeitsverzeichniss angelegt wird<br />
                    /log<br />
weiter muss<br />
                    /run/pid<br />
                           PID_DATEI="/opt/opensim/run/pid/&#36;{INSTTAG}.pid"<br />
Dies muss in der " OpenSim.ini angegeben werden " /opt/opensim/run/pid/Inst_01.pid " 02/03 je nach bin_xx<br />
vorhanden sein<br />
<br />
Noch ein Wort zu der MySql und Robust prüfung. Bei " auto " wird geprüft ob unter der angegeben IP / HOST der Dienst verfügbar ist, in zweiter line, ob er local läuft. <br />
Ein Abruch kommt, wenn<br />
Dienst nicht erreichbar<br />
Config falsch, leer oder nicht vorhanden, ebenso Arbeitsverzeichniss fehlt oder ports falsch sind !<br />
<br />
Unter Ubuntu, kann das script eins zu eins in "Monit" eingebunden werden<br />
(Debian ist da leider zickig <img src="https://www.gridtalk.de/images/smilies/wink.gif" alt="Wink" title="Wink" class="smilie smilie_2" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /> )<br />
Beispiel:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code># Monitor mono opensim Service for Instanze 01<br />
check process SIMNAME (/ INST oder wie man möchte)<br />
&nbsp;&nbsp;&nbsp;&nbsp;with pidfile /opt/opensim/run/pid/Inst_01.pid<br />
GROUP opensim<br />
ONREBOOT NOSTART<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;start program = "/home/OPENSIMUSER/.local/bin/sim_start_sop.sh start 1"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as uid OPENSIMUSER and gid OPENSIMUSER<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;stop program&nbsp;&nbsp;= "/home/OPENSIMUSER/.local/bin/sim_start_stop.sh stop 1"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as uid OPENSIMUSER and gid OPENSIMUSER<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if failed<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host 127.0.0.1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port 9010<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protocol http<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request "/simstatus" within<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15 cycles then restart<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if memory usage &gt; 768 MB then alert<br />
&nbsp;&nbsp;&nbsp;&nbsp;if memory usage &gt; 972 MB then restart<br />
&nbsp;&nbsp;&nbsp;&nbsp;if cpu usage &gt; 50% then alert<br />
&nbsp;&nbsp;&nbsp;&nbsp;if cpu usage &gt; 75% for 3 cycles then restart<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if does not exist then restart<br />
&nbsp;&nbsp;&nbsp;&nbsp;if 3 restarts within 5 cycles then timeout<br />
<br />
depends on mysqld , Robust</code></div></div><br />
<br />
Ach ja, das script kann also wie im Beispiel oben <br />
" sim_start_stop.sh <span style="font-weight: bold;" class="mycode_b">start</span> 1 " <br />
" sim_start_stop.sh <span style="font-weight: bold;" class="mycode_b">stop</span> 1 "<br />
" sim_start_stop.sh <span style="font-weight: bold;" class="mycode_b">status</span> 1 "<br />
  aufgefrufen werden ...<br />
<br />
Als dann, ich hoffe, das ich alles Gut Klar beschrieben habe, und bin auf eure reaktionen gespannt. <br />
<br />
Und zu guter letzt, möchte ich mich bei "Manfred Aabye" für die Inspiration für die Color ausgabe in der Console bedanken. <br />
WinBlöd wird ja auch so viel verkauft, weil es hüpsch aussieht <img src="https://www.gridtalk.de/images/smilies/wink.gif" alt="Wink" title="Wink" class="smilie smilie_2" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" />]]></description>
			<content:encoded><![CDATA[Fast drei Monate habe ich jetzt wieder Opensimulator und die Server am Wickel. <br />
Heute möchte ich euch mein sim_start_stop.sh script – Projektstatus &amp; Dokumentationsanker vorstellen.<br />
<br />
Nach dem die neu aufgebauten <span style="font-weight: bold;" class="mycode_b">Debian GNU/Linux 13 (trixie)</span> und <span style="font-weight: bold;" class="mycode_b">Ubuntu Ubuntu 22.04 (jammy)</span> Server Laufen, <br />
ist jetzt <span style="font-weight: bold;" class="mycode_b">OpenSim 0.9.3 in Brid-Berlin</span> am laufen.<br />
<br />
Es hat mich einiges an zeit gekostet meine Alten scripte zu sortieren, aufzuräumen, auszumülllen, anzupassen und kann sie hier heute stabil euch zeigen. <br />
<span style="font-weight: bold;" class="mycode_b">Ach und was ganz WICHTIGES, das script nimt keine änderungen an eurern Opensim instalationen vor!!</span><br />
<br />
<span style="text-decoration: underline;" class="mycode_u">Ziel des Projekts:</span><br />
- Robustes, nachvollziehbares <span style="font-weight: bold;" class="mycode_b">Start/Stop/Status-Script</span> für OpenSim<br />
- Fokus auf Stabilität, klare Prüfungen und saubere Fehlermeldungen<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">Getestete / Zielumgebung:</span><br />
- Ubuntu (aktuelle LTS)<br />
- Debian 13<br />
- Bash-Scripting<br />
- OpenSim mit Robust (local / remote / auto)<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">Bewusste Designentscheidungen:</span><br />
- Keine Abhängigkeit von OpenSim-Konfigurationsstrings<br />
- Keine Modifikation bestehender OpenSim-Konfigurationen<br />
- Prüfungen erfolgen ausschließlich scriptseitig<br />
- PID-Prüfungen nur als Rückverifizierung, niemals allein entscheidend<br />
- Dienste müssen erreichbar sein, nicht nur „lokal laufen“<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">Robust-Prüfung:</span><br />
- Modus: local / remote / auto<br />
- Prüfung der tatsächlichen Erreichbarkeit (Ports)<br />
- OpenSim-Instanzen starten nur, wenn ein passender Robust erreichbar ist<br />
- Mehrere Robust-Instanzen (z. B. Grid, Assets, Login, Testgrid) sind berücksichtigt<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">MySQL-Prüfung:</span><br />
- Analog zur Robust-Logik umgesetzt<br />
- Local / remote / auto möglich<br />
- Keine Abhängigkeit von EstateConnectionString<br />
- Klare, explizite MySQL-Parameter im Script<br />
<br />
<span style="text-decoration: underline;" class="mycode_u">Was ich mir von der Community wünsche:</span><br />
- Feedback zu Designentscheidungen<br />
- Erfahrungen aus anderen Systemumgebungen<br />
- Hinweise auf reale Edge-Cases<br />
- Sachliche Kritik, keine Grundsatzdebatten<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#!/usr/bin/env bash<br />
# ==========================================================<br />
# sim_start_stop.sh<br />
# ----------------------------------------------------------<br />
# OpenSimulator Start | Stop | Status Script<br />
#<br />
# Version:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.5.3<br />
# OpenSim:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.9.3<br />
# Getestet unter: Ubuntu / Debian (mit MySQL)<br />
#<br />
# Lizenz: BSD (Open Source)<br />
# Autor:&nbsp;&nbsp;Gau Hax<br />
# Mail:&nbsp;&nbsp; gauhax@vamp-berlin.de<br />
#<br />
# Zweck:<br />
#&nbsp;&nbsp;- Starten, Stoppen und Statusabfrage einzelner<br />
#&nbsp;&nbsp;&nbsp;&nbsp;OpenSimulator-Instanzen in einem Multi-Screen-Setup<br />
#<br />
# Philosophie:<br />
#&nbsp;&nbsp;- Klar, robust, admin-tauglich<br />
#&nbsp;&nbsp;- Keine Magie, keine Endlosschleifen<br />
#&nbsp;&nbsp;- Fehler sichtbar machen, nicht verstecken<br />
# ==========================================================<br />
# -----------------------------<br />
# Parameter ( Start )<br />
# -----------------------------<br />
AKTION="&#36;1"<br />
INSTANZ="&#36;2"<br />
<br />
if [[ ! "&#36;{AKTION}" =~ ^(start|stop|status)&#36; ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "Nutzung: &#36;0 start|stop|status &lt;1-20&gt;"<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit 1<br />
fi<br />
<br />
if [[ ! "&#36;{INSTANZ}" =~ ^[0-9]+&#36; ]] || (( INSTANZ &lt; 1 || INSTANZ &gt; 20 )); then<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "Instanz muss eine Zahl von 1 bis 20 sein"<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit 1<br />
fi<br />
<br />
INSTNUM="&#36;(printf "%02d" "&#36;{INSTANZ}")"<br />
INSTTAG="Inst_&#36;{INSTNUM}"<br />
<br />
STATUS_MODUS=false<br />
[[ "&#36;{AKTION}" == "status" ]] &amp;&amp; STATUS_MODUS=true<br />
<br />
abbruch_oder_status() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;[[ "&#36;{STATUS_MODUS}" == false ]] &amp;&amp; exit 1<br />
}<br />
<br />
# ----------------------------------------------------------<br />
# Statische Konfiguration ( Robust / MySql / Verzeichnisse )<br />
# ----------------------------------------------------------<br />
<br />
# --- Robust Grid Service ---<br />
ROBUST_MODE="auto"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# local | remote | auto<br />
ROBUST_HOST="127.0.0.1"&nbsp;&nbsp; # Host oder IP<br />
ROBUST_PORT_1="8002"<br />
ROBUST_PORT_2="8003"<br />
ROBUST_TAG="Robust"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # -smtag=Robust z.b.<br />
<br />
# --- MySQL ---<br />
MYSQL_MODE="auto"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # local | remote | auto<br />
MYSQL_HOST="127.0.0.1"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Host oder IP<br />
MYSQL_PORT="3306"<br />
MYSQL_DB="opensim-datenbank"&nbsp;&nbsp;&nbsp;&nbsp;# Anpassen DB<br />
<br />
# --- Basis &amp; Pfade ---<br />
#<br />
# Start Verzeichniss von OpenSimulator / Anpassen !<br />
#<br />
BASIS_VERZEICHNIS="/opt/opensim"<br />
ARBEITS_VERZEICHNIS="&#36;{BASIS_VERZEICHNIS}/bin_&#36;{INSTNUM}"<br />
<br />
# PID Verzeichniss = OpenSim.ini / Anpassen !<br />
PID_DATEI="/opt/opensim/run/pid/&#36;{INSTTAG}.pid"<br />
<br />
# Log Datein Verzeichniss<br />
LOG_VERZEICHNIS="/opt/opensim/log"<br />
LOG_DATEI="&#36;{LOG_VERZEICHNIS}/sim_start_stop&#36;{INSTNUM}.log"<br />
<br />
SCREEN_HAUPT="HAUPSCREEN-NAME"&nbsp;&nbsp;# z.b. Simss / Simss_01 !!<br />
ERWARTETER_USER="OPENSIMUNSER"&nbsp;&nbsp;# euer User vom System für Opensim!<br />
<br />
mkdir -p "&#36;{LOG_VERZEICHNIS}"<br />
<br />
# -----------------------------<br />
# Pflichtdateien – Definition<br />
# -----------------------------<br />
<br />
# Dateien direkt im Arbeitsverzeichnis (bin_XX)<br />
PFLICHT_DATEIEN_ROOT=(<br />
&nbsp;&nbsp;&nbsp;&nbsp;"OpenSim.ini"<br />
&nbsp;&nbsp;&nbsp;&nbsp;"OpenSimDefaults.ini"<br />
)<br />
<br />
# Dateien unter config-include/<br />
# Sind hier als vorlage für ... !<br />
PFLICHT_DATEIEN_CONFIG=(<br />
&nbsp;&nbsp;&nbsp;&nbsp;"GridCommon.ini"<br />
&nbsp;&nbsp;&nbsp;&nbsp;"FlotsamCache.ini"<br />
)<br />
<br />
# Regions-Datei (Sonderpfad)<br />
# Ich gehe hier davon aus, das script, es es mindestens<br />
# eine "Regions.ini" Datei für eine Inst hat<br />
REGION_DATEI="&#36;{ARBEITS_VERZEICHNIS}/Regions/Regions.ini"<br />
<br />
# -----------------------------<br />
# Pflicht Datein Prüfung (erweiterung)<br />
# ERWEITERUNG !!! in vorbereitung !<br />
# -----------------------------<br />
## PFLICHT_DATEIEN_CONFIG+=( "NeueDatei.ini" )<br />
<br />
# -----------------------------<br />
# Farben (Konsole)<br />
# muss ja schön aussehen<br />
# Danke an Manfred Aabye für die Inspiration<br />
# -----------------------------<br />
## C_RESET="&#92;033[0m"<br />
## C_INFO="&#92;033[1;34m"<br />
## C_WARN="&#92;033[1;33m"<br />
## C_ERR="&#92;033[1;31m"<br />
## C_OK="&#92;033[1;32m"<br />
C_RESET="&#92;033[0m"<br />
C_INFO="&#92;033[1;33m"<br />
C_WARN="&#92;033[33;1m"<br />
C_ERR="&#92;033[31m"<br />
C_OK="&#92;033[32m"<br />
<br />
# -----------------------------<br />
# Logging<br />
# Console mit Farbe, Datei mit Datum und Uhrzeit<br />
# -----------------------------<br />
log_console() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo -e "&#36;2[&#36;1]&#36;{C_RESET} &#36;3"<br />
}<br />
<br />
log_file() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "[ &#36;(date '+%Y-%m-%d %H:%M:%S') ] [&#36;1] &#36;2" &gt;&gt; "&#36;{LOG_DATEI}"<br />
}<br />
<br />
log_info() { log_console INFO "&#36;{C_INFO}" "&#36;1"; log_file INFO "&#36;1"; }<br />
log_warn() { log_console WARN "&#36;{C_WARN}" "&#36;1"; log_file WARN "&#36;1"; }<br />
log_err()&nbsp;&nbsp;{ log_console FEHLER "&#36;{C_ERR}" "&#36;1"; log_file FEHLER "&#36;1"; }<br />
log_ok()&nbsp;&nbsp; { log_console OK "&#36;{C_OK}" "&#36;1"; log_file OK "&#36;1"; }<br />
<br />
# -----------------------------<br />
# Robust Prüfung<br />
# -----------------------------<br />
<br />
check_robust() {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_info "Robust-Prüfung gestartet (Modus: &#36;{ROBUST_MODE})"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Port-Check Funktion<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_ports() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ok=true<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for port in "&#36;{ROBUST_PORT_1}" "&#36;{ROBUST_PORT_2}"; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if timeout 2 bash -c "&lt;/dev/tcp/&#36;{ROBUST_HOST}/&#36;{port}" 2&gt;/dev/null; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Robust-Port erreichbar: &#36;{ROBUST_HOST}:&#36;{port}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Robust-Port NICHT erreichbar: &#36;{ROBUST_HOST}:&#36;{port}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok=false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[ "&#36;{ok}" == true ]]<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Prozess-Check Funktion<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_process() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local found=false<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while read -r pid; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMD="&#36;(tr '&#92;0' ' ' &lt; /proc/&#36;{pid}/cmdline 2&gt;/dev/null)"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if echo "&#36;{CMD}" | grep -qi "Robust" &amp;&amp; echo "&#36;{CMD}" | grep -q -- "-smtag=&#36;{ROBUST_TAG}"; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Robust-Prozess gefunden (PID=&#36;{pid})"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;found=true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done &lt; &lt;(pgrep -f dotnet || true)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[ "&#36;{found}" == true ]]<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Modus-Auswertung<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;case "&#36;{ROBUST_MODE}" in<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_info "Robust LOCAL: Prozessprüfung"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_process || {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Lokaler Robust läuft nicht"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remote)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_info "Robust REMOTE: Portprüfung"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_ports || {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Remote Robust nicht erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_info "Robust AUTO: Erkennung local / remote"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if check_process; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Robust lokal erkannt"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Kein lokaler Robust – prüfe Remote"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_ports || {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Robust weder lokal noch remote erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Unbekannter ROBUST_MODE: &#36;{ROBUST_MODE}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;esac<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Robust-Prüfung erfolgreich"<br />
&nbsp;&nbsp;&nbsp;&nbsp;return 0<br />
}<br />
<br />
# ----------------------------------------------------------<br />
# MySQL-Prüfung (analog Robust)<br />
# ----------------------------------------------------------<br />
check_mysql() {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_info "MySQL-Prüfung gestartet (Modus: &#36;{MYSQL_MODE})"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Port-Check Funktion<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_port() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if timeout 2 bash -c "&lt;/dev/tcp/&#36;{MYSQL_HOST}/&#36;{MYSQL_PORT}" 2&gt;/dev/null; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "MySQL-Port erreichbar: &#36;{MYSQL_HOST}:&#36;{MYSQL_PORT}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "MySQL-Port NICHT erreichbar: &#36;{MYSQL_HOST}:&#36;{MYSQL_PORT}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Lokaler Dienst-Check<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_local_service() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if mysqladmin ping --silent &gt;/dev/null 2&gt;&amp;1; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Lokaler MySQL-Dienst erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Lokaler MySQL-Dienst nicht erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Datenbank-Check<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_database() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if mysql -e "USE &#36;{MYSQL_DB};" &gt;/dev/null 2&gt;&amp;1; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "MySQL-Datenbank '&#36;{MYSQL_DB}' erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "MySQL-Datenbank '&#36;{MYSQL_DB}' nicht erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Modus-Auswertung<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;case "&#36;{MYSQL_MODE}" in<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_info "MySQL LOCAL: Dienstprüfung"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_local_service || return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remote)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_info "MySQL REMOTE: Portprüfung"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_port || return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_info "MySQL AUTO: Erkennung local / remote"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if check_local_service; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "MySQL lokal erkannt"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Kein lokaler MySQL – prüfe Remote"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_port || {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "MySQL weder lokal noch remote erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Unbekannter MYSQL_MODE: &#36;{MYSQL_MODE}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;esac<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Datenbank immer prüfen<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_database || return 1<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "MySQL-Datenbank-Prüfung erfolgreich"<br />
&nbsp;&nbsp;&nbsp;&nbsp;return 0<br />
}<br />
<br />
# -----------------------------<br />
# Benutzerprüfung<br />
# Läuft OpenSim unter dem richtigen SystemBenutzer<br />
# -----------------------------<br />
AKTUELLER_USER="&#36;(whoami)"<br />
if [[ "&#36;{AKTUELLER_USER}" != "&#36;{ERWARTETER_USER}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Script läuft als '&#36;{AKTUELLER_USER}', erwartet '&#36;{ERWARTETER_USER}'"<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Script läuft unter korrektem Benutzer '&#36;{ERWARTETER_USER}'"<br />
fi<br />
<br />
<br />
# -----------------------------<br />
# Host &amp; IP<br />
# Hier prüfen / ermitteln IP / Host<br />
# -----------------------------<br />
HOST="&#36;(hostname)"<br />
HOSTIP="&#36;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;ip route get 1.1.1.1 2&gt;/dev/null &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| awk '{for(i=1;i&lt;=NF;i++) if (&#36;i=="src") {print &#36;(i+1); exit}}'<br />
)"<br />
<br />
[[ -n "&#36;{HOSTIP}" ]] &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; log_ok "System: HOST=&#36;{HOST}, IP=&#36;{HOSTIP}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;|| log_err "System-IP konnte nicht ermittelt werden"<br />
<br />
<br />
# -----------------------------<br />
# Arbeitsverzeichnis<br />
# -----------------------------<br />
if [[ ! -d "&#36;{ARBEITS_VERZEICHNIS}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_err "Arbeitsverzeichnis fehlt: &#36;{ARBEITS_VERZEICHNIS}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Arbeitsverzeichnis vorhanden"<br />
fi<br />
<br />
# -----------------------------<br />
# Pflichtdateien prüfen<br />
# -----------------------------<br />
<br />
# Root-Dateien<br />
for datei in "&#36;{PFLICHT_DATEIEN_ROOT[@]}"; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;pfad="&#36;{ARBEITS_VERZEICHNIS}/&#36;{datei}"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [[ ! -f "&#36;{pfad}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Pflichtdatei fehlt: &#36;{pfad}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
&nbsp;&nbsp;&nbsp;&nbsp;elif [[ ! -s "&#36;{pfad}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Pflichtdatei ist leer: &#36;{pfad}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Pflichtdatei geprüft: &#36;{datei}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
done<br />
<br />
# config-include-Dateien<br />
for datei in "&#36;{PFLICHT_DATEIEN_CONFIG[@]}"; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;pfad="&#36;{ARBEITS_VERZEICHNIS}/config-include/&#36;{datei}"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [[ ! -f "&#36;{pfad}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Pflichtdatei fehlt: &#36;{pfad}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
&nbsp;&nbsp;&nbsp;&nbsp;elif [[ ! -s "&#36;{pfad}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Pflichtdatei ist leer: &#36;{pfad}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Pflichtdatei geprüft: config-include/&#36;{datei}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
done<br />
<br />
# Regions.ini<br />
if [[ ! -f "&#36;{REGION_DATEI}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_err "Regions-Datei fehlt: &#36;{REGION_DATEI}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
elif [[ ! -s "&#36;{REGION_DATEI}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_err "Regions-Datei ist leer: &#36;{REGION_DATEI}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Regions-Datei geprüft: Regions.ini"<br />
fi<br />
<br />
# -----------------------------<br />
# Regions.ini auswerten<br />
# -----------------------------<br />
REGIONS_NAME="&#36;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;awk -F'[][]' '/^&#92;[/{print &#36;2; exit}' "&#36;{REGION_DATEI}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| sed 's/^[[:space:]]*//; s/[[:space:]]*&#36;//'<br />
)"<br />
<br />
REGIONS_UUID="&#36;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;grep -E '^RegionUUID[[:space:]]*=' "&#36;{REGION_DATEI}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| awk -F '=' '{gsub(/[[:space:]]/, "", &#36;2); print &#36;2}' &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| head -n1<br />
)"<br />
<br />
[[ -n "&#36;{REGIONS_NAME}" ]] &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; log_ok "Regionsname: &#36;{REGIONS_NAME}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;|| log_warn "Kein Regionsname gefunden"<br />
<br />
[[ -n "&#36;{REGIONS_UUID}" ]] &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; log_ok "RegionUUID: &#36;{REGIONS_UUID}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;|| log_warn "Keine RegionUUID gefunden"<br />
<br />
<br />
# -----------------------------<br />
# Port-Prüfung<br />
# -----------------------------<br />
OS_PORT="&#36;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;grep -E '^[[:space:]]*http_listener_port[[:space:]]*=' &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;"&#36;{ARBEITS_VERZEICHNIS}/OpenSim.ini" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| awk -F '=' '{gsub(/[[:space:]]/, "", &#36;2); print &#36;2}' &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| head -n1<br />
)"<br />
<br />
REGION_PORTS="&#36;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;grep -E '^[[:space:]]*InternalPort[[:space:]]*=' "&#36;{REGION_DATEI}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| awk -F '=' '{gsub(/[[:space:]]/, "", &#36;2); print &#36;2}'<br />
)"<br />
<br />
[[ -n "&#36;{OS_PORT}" ]] &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; log_ok "OpenSim Listener-Port: &#36;{OS_PORT}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;|| { log_err "Kein http_listener_port gefunden"; abbruch_oder_status; }<br />
<br />
for rport in &#36;{REGION_PORTS}; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;[[ "&#36;{rport}" == "&#36;{OS_PORT}" ]] &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; log_ok "Region-Port &#36;{rport} passt" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|| log_warn "Region-Port &#36;{rport} weicht ab"<br />
done<br />
<br />
<br />
# ==========================================================<br />
# PIDFile Prüfung (OpenSim.ini) – robust (mit/ohne Anführungszeichen)<br />
#<br />
# ==========================================================<br />
PIDFILE_INI_RAW="&#36;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;grep -E '^[[:space:]]*PIDFile[[:space:]]*=' &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;"&#36;{ARBEITS_VERZEICHNIS}/OpenSim.ini" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| head -n1 &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| awk -F '=' '{print &#36;2}'<br />
)"<br />
<br />
PIDFILE_INI="&#36;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "&#36;{PIDFILE_INI_RAW}" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| sed 's/^[[:space:]]*//; s/[[:space:]]*&#36;//' &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;| sed 's/^"//; s/"&#36;//'<br />
)"<br />
<br />
if [[ -z "&#36;{PIDFILE_INI}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_err "PIDFile ist nicht in OpenSim.ini gesetzt"<br />
&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
elif [[ "&#36;{PIDFILE_INI}" != "&#36;{PID_DATEI}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_err "PIDFile stimmt nicht"<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_err "Gefunden : &#36;{PIDFILE_INI}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_err "Erwartet: &#36;{PID_DATEI}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;abbruch_oder_status<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "PIDFile korrekt gesetzt (&#36;{PIDFILE_INI})"<br />
fi<br />
<br />
<br />
# ==========================================================<br />
# AKTIONEN ( start | stop | status )<br />
# ==========================================================<br />
case "&#36;{AKTION}" in<br />
<br />
# -----------------------------<br />
# STATUS<br />
# Läuft komplett durch, auch bei Fehlern !<br />
# -----------------------------<br />
status)<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [[ -f "&#36;{PID_DATEI}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PID="&#36;(cat "&#36;{PID_DATEI}")"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [[ -n "&#36;{PID}" &amp;&amp; -d "/proc/&#36;{PID}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMD="&#36;(tr '&#92;0' ' ' &lt; /proc/&#36;{PID}/cmdline)"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if echo "&#36;{CMD}" | grep -q -- "-smtag=&#36;{INSTTAG}"; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Instanz läuft (PID=&#36;{PID})"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "PID aktiv, aber falscher Prozess"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Verwaiste PID-Datei gefunden"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_info "Instanz läuft nicht"<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [[ "&#36;{AKTION}" == "status" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_robust &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; log_ok "Robust-Status: OK" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|| log_warn "Robust-Status: NICHT erreichbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_mysql &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; log_ok "MySQL-Status: OK" &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|| log_warn "MySQL-Status: FEHLER"<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
# -----------------------------<br />
# START<br />
# Hier muss alles passen<br />
# ansonsten abbruch<br />
# -----------------------------<br />
start)<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Startbefehl gesendet - Anfang"<br />
#&nbsp;&nbsp;&nbsp;&nbsp;check_robust || { log_err "Start abgebrochen: Robust nicht verfügbar"; exit 1; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_mysql&nbsp;&nbsp;|| { log_err "Start abgebrochen: MySQL nicht verfügbar"; exit 1; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [[ "&#36;{AKTION}" == "start" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;check_robust || {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Start abgebrochen: Robust nicht verfügbar"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [[ -f "&#36;{PID_DATEI}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PID="&#36;(cat "&#36;{PID_DATEI}")"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [[ -n "&#36;{PID}" &amp;&amp; -d "/proc/&#36;{PID}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Instanz läuft bereits (PID=&#36;{PID})"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Verwaiste PID-Datei entfernt"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rm -f "&#36;{PID_DATEI}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ! screen -list | grep -q "&#92;.&#36;{SCREEN_HAUPT}"; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_err "Hauptscreen '&#36;{SCREEN_HAUPT}' existiert nicht"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_info "Starte Instanz &#36;{INSTTAG} (&#36;{REGIONS_NAME})"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p 0 -X screen -t "&#36;{REGIONS_NAME}" "&#36;{INSTNUM}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;sleep 0.5<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p "&#36;{INSTNUM}" -X stuff &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cd &#36;{ARBEITS_VERZEICHNIS} &amp;&amp; dotnet OpenSim.dll -smtag=&#36;{INSTTAG}^M"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Startbefehl gesendet - Ende"<br />
&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
<br />
# -----------------------------<br />
# STOP<br />
# mit kontrolle auf sauberes ENDE<br />
# -----------------------------<br />
stop)<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [[ ! -f "&#36;{PID_DATEI}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Keine PID-Datei – Instanz läuft nicht"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;PID="&#36;(cat "&#36;{PID_DATEI}")"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_info "Stoppe Instanz &#36;{INSTTAG} (&#36;{REGIONS_NAME})"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p "&#36;{INSTNUM}" -X stuff &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alert Die Region &#36;{REGIONS_NAME} wird in 2 Minuten gestoppt.^M"<br />
&nbsp;&nbsp;&nbsp;&nbsp;sleep 0.3<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p "&#36;{INSTNUM}" -X stuff "login disable^M"<br />
&nbsp;&nbsp;&nbsp;&nbsp;sleep 120<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p "&#36;{INSTNUM}" -X stuff &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alert Die Region &#36;{REGIONS_NAME} wird in 1 Minute gestoppt.^M"<br />
&nbsp;&nbsp;&nbsp;&nbsp;sleep 45<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p "&#36;{INSTNUM}" -X stuff &#92;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"alert Die Region &#36;{REGIONS_NAME} wird in 15 Sekunden gestoppt.^M"<br />
&nbsp;&nbsp;&nbsp;&nbsp;sleep 15<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p "&#36;{INSTNUM}" -X stuff "quit^M"<br />
&nbsp;&nbsp;&nbsp;&nbsp;sleep 5<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;screen -S "&#36;{SCREEN_HAUPT}" -p "&#36;{INSTNUM}" -X stuff "exit^M"<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;# Warte Zyklus auf sauber Stop<br />
&nbsp;&nbsp;&nbsp;&nbsp;# -------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;for ((i=0;i&lt;20;i++)); do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep 15<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[ ! -d "/proc/&#36;{PID}" ]] &amp;&amp; break<br />
&nbsp;&nbsp;&nbsp;&nbsp;done<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if [[ -d "/proc/&#36;{PID}" ]]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_warn "Prozess hängt – hartes KILL"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kill -9 "&#36;{PID}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;rm -f "&#36;{PID_DATEI}"<br />
&nbsp;&nbsp;&nbsp;&nbsp;log_ok "Instanz sauber gestoppt"<br />
&nbsp;&nbsp;&nbsp;&nbsp;;;<br />
esac<br />
<br />
exit 0</code></div></div><br />
Kurze erklärung zu dem Script.<br />
<span style="font-style: italic;" class="mycode_i">Eine genaue Erklärung, Anleitung unter</span> <a href="https://www.grid-berlin.de/sim-start-stop-script/" target="_blank" rel="noopener" class="mycode_url">Opensim Start Stop Script</a><br />
<br />
Im Kopf sind alle wichtigen angaben zu machen für Robus und MySql den Verzeichnissen und SystemUser unter dem Opemsim Läuft. <br />
Vorraussetzungen<br />
- Laufender HAUPTSCREEN<br />
  " Ein HauptScreen wird bei mir mit dem System automatsch gestartet "<br />
  <span style="font-style: italic;" class="mycode_i">" Wer kein script für ein "Hauptscreen hat, kann sich gerne melden"</span><br />
- Opensim muss auf dem System Lauffähig vorliegen<br />
  "keine nachinstalationen durch das script"<br />
- Robust muss erreichbar sein local | remote | auto<br />
- MySql ebenso local | remote | auto<br />
<span style="font-style: italic;" class="mycode_i">- eine vorhandene ( .my.cnf ) im stamverzeichniss des Opensim Users<br />
   [client]<br />
    user=opensimuser<br />
    password=suppergeheim<br />
  muss identisch zu dem User sein der in Opensimulator ist, und zugriff auf die entsprechende Datenbank haben</span><br />
<br />
Hier jetzt mal ein Beispiel zu der Gesamt Konfiguration <br />
<br />
Stamm Verzeichniss /opt/opensim<br />
Instanzen                           bin_01<br />
                                           bin_02 ... usw<br />
eine Instanz wird immer von 1 -20 aufgerufen, daraus wird an nötigen stellen 1 = 01 / 2 = 02 ... usw ist für die bin_xx für den INSTTAG  (Inst_01) und den screen (1, 2 ,3 ... ) verwendet<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Instanzlogik:</span></span><br />
- INSTNUM  = zweistellig (01–20)<br />
- INSTTAG  = Inst_XX<br />
- smtag    = <span style="font-weight: bold;" class="mycode_b">-smtag=</span>INSTTAG (zwingend)<br />
Opensim aufruf / start ( dotnet OpenSim.dll -smtag=Inst_XX ) xx ersetzt das script durch entsprechdende Nummer!<br />
(diesen <span style="font-weight: bold;" class="mycode_b">-smtag=Robust</span> könnt ihr, solltet ihr auch machen)<br />
Log Verzeichniss, ist das einziegstes was bei nicht vorhanden sein, im Arbeitsverzeichniss angelegt wird<br />
                    /log<br />
weiter muss<br />
                    /run/pid<br />
                           PID_DATEI="/opt/opensim/run/pid/&#36;{INSTTAG}.pid"<br />
Dies muss in der " OpenSim.ini angegeben werden " /opt/opensim/run/pid/Inst_01.pid " 02/03 je nach bin_xx<br />
vorhanden sein<br />
<br />
Noch ein Wort zu der MySql und Robust prüfung. Bei " auto " wird geprüft ob unter der angegeben IP / HOST der Dienst verfügbar ist, in zweiter line, ob er local läuft. <br />
Ein Abruch kommt, wenn<br />
Dienst nicht erreichbar<br />
Config falsch, leer oder nicht vorhanden, ebenso Arbeitsverzeichniss fehlt oder ports falsch sind !<br />
<br />
Unter Ubuntu, kann das script eins zu eins in "Monit" eingebunden werden<br />
(Debian ist da leider zickig <img src="https://www.gridtalk.de/images/smilies/wink.gif" alt="Wink" title="Wink" class="smilie smilie_2" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /> )<br />
Beispiel:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code># Monitor mono opensim Service for Instanze 01<br />
check process SIMNAME (/ INST oder wie man möchte)<br />
&nbsp;&nbsp;&nbsp;&nbsp;with pidfile /opt/opensim/run/pid/Inst_01.pid<br />
GROUP opensim<br />
ONREBOOT NOSTART<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;start program = "/home/OPENSIMUSER/.local/bin/sim_start_sop.sh start 1"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as uid OPENSIMUSER and gid OPENSIMUSER<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;stop program&nbsp;&nbsp;= "/home/OPENSIMUSER/.local/bin/sim_start_stop.sh stop 1"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as uid OPENSIMUSER and gid OPENSIMUSER<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if failed<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host 127.0.0.1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port 9010<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protocol http<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request "/simstatus" within<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15 cycles then restart<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if memory usage &gt; 768 MB then alert<br />
&nbsp;&nbsp;&nbsp;&nbsp;if memory usage &gt; 972 MB then restart<br />
&nbsp;&nbsp;&nbsp;&nbsp;if cpu usage &gt; 50% then alert<br />
&nbsp;&nbsp;&nbsp;&nbsp;if cpu usage &gt; 75% for 3 cycles then restart<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if does not exist then restart<br />
&nbsp;&nbsp;&nbsp;&nbsp;if 3 restarts within 5 cycles then timeout<br />
<br />
depends on mysqld , Robust</code></div></div><br />
<br />
Ach ja, das script kann also wie im Beispiel oben <br />
" sim_start_stop.sh <span style="font-weight: bold;" class="mycode_b">start</span> 1 " <br />
" sim_start_stop.sh <span style="font-weight: bold;" class="mycode_b">stop</span> 1 "<br />
" sim_start_stop.sh <span style="font-weight: bold;" class="mycode_b">status</span> 1 "<br />
  aufgefrufen werden ...<br />
<br />
Als dann, ich hoffe, das ich alles Gut Klar beschrieben habe, und bin auf eure reaktionen gespannt. <br />
<br />
Und zu guter letzt, möchte ich mich bei "Manfred Aabye" für die Inspiration für die Color ausgabe in der Console bedanken. <br />
WinBlöd wird ja auch so viel verkauft, weil es hüpsch aussieht <img src="https://www.gridtalk.de/images/smilies/wink.gif" alt="Wink" title="Wink" class="smilie smilie_2" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Der Port 8003 am Router muss geschlossen bleiben!]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=5349</link>
			<pubDate>Thu, 29 Jan 2026 09:11:00 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=1724">Holger Berger</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=5349</guid>
			<description><![CDATA[Hallo liebe Gemeinde,<br />
<br />
ich habe hinter dem Router OpenSim mit Robust und dotnet-runtime-8.0 auf Ubuntu erfolgreich aufgesetzt.<br />
<br />
Bei einer Grid Installation ist der PrivatePort = 8003 nur für interne Dieste zuständig. <br />
<br />
Dieser Port sollte auf dem Router auch geschlossen bleiben. Im Test funktioniert das neue Grid super aber nur wenn Port 8003 offen ist. <br />
<br />
Muss ich am Robust oder der OpenSim.ini die 127.0.0.1 „localhost“ einbinden? Wenn ja an welcher Stelle?<br />
<br />
Ich verwende OpenSim 0.9.3.0. <br />
<br />
Eventuell kann jemand aus Erfahrung helfen.<br />
<br />
Vielen Dank]]></description>
			<content:encoded><![CDATA[Hallo liebe Gemeinde,<br />
<br />
ich habe hinter dem Router OpenSim mit Robust und dotnet-runtime-8.0 auf Ubuntu erfolgreich aufgesetzt.<br />
<br />
Bei einer Grid Installation ist der PrivatePort = 8003 nur für interne Dieste zuständig. <br />
<br />
Dieser Port sollte auf dem Router auch geschlossen bleiben. Im Test funktioniert das neue Grid super aber nur wenn Port 8003 offen ist. <br />
<br />
Muss ich am Robust oder der OpenSim.ini die 127.0.0.1 „localhost“ einbinden? Wenn ja an welcher Stelle?<br />
<br />
Ich verwende OpenSim 0.9.3.0. <br />
<br />
Eventuell kann jemand aus Erfahrung helfen.<br />
<br />
Vielen Dank]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Host IP filtern - Latein am ende]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=5348</link>
			<pubDate>Thu, 29 Jan 2026 00:53:29 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=5">Gau Hax</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=5348</guid>
			<description><![CDATA[für mich ist es jetzt hier an der stelle noch " Guten Abend "<br />
Ich schlage mich gerade mich einem Problem rum, was zwei meiner Server betrifft.<br />
<br />
der <span style="font-weight: bold;" class="mycode_b">kleine</span> "Ubuntu 22.04.5 LTS" VServer und der <span style="font-weight: bold;" class="mycode_b">GROSSE</span> "Debian GNU/Linux 13 (trixie)"<br />
<br />
Mein vorhaben war, in einem bash script die system IP sicher zu ermitteln. mein erster Ansatz war der folgende<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ip route get 1.1.1.1 2&gt;/dev/null | awk '{print &#36;7; exit}'</code></div></div>Debian Liefert das richtige Ergebnis, Unbuntu leider nur eine leere Zeile.<br />
<br />
bei dem kleinen bekam ich die richtige antwort erst bei print <span style="font-weight: bold;" class="mycode_b">&#36;5</span> anstelle von print <span style="font-weight: bold;" class="mycode_b">&#36;7</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ip route get 1.1.1.1 2&gt;/dev/null | awk '{print &#36;5; exit}'</code></div></div><br />
ich habe danach raus bekommen, das Debian und Ubuntu da etwas anders die Daten zusammen setzen. Und deswegen bin ich auf eine zweite variante umgestiegen<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ip route get 1.1.1.1 2&gt;/dev/null | awk '{for (i=1;i&lt;=NF;i++) if (&#36;i=="src") print &#36;(i+1)}'</code></div></div><br />
Hier klaptt es jetzt...<br />
Da ich aber jemand bin, der immer eine "Fallback" Möglichkeit haben möchte, habe ich folgendes versucht.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>hostname -I | awk '{print &#36;1}'</code></div></div><br />
... und schon wieder baut der Ubuntu VServer misst, und gibt an der stelle "127.0.0.1" aus. Erst an stelle zwei &#36;2 ist die richtige IP. der Debian machte es auf Anhieb richtig unter &#36;1 richtig.<br />
<br />
was ich jetzt suche ist, eine Saubere, einfache Lösung, das ich beiden Systemen sage, prüfe deine Ausgabe. und wenn diese 127.0.0.1 sein sollte, nehme die nächste &#36;2.<br />
Oder ganz anderes eben, um sicher zu stellen, das beide  das gleiche Ergebnis liefern, also Ihre IP nach aussen !<br />
<br />
... nochmal Oder soll ich mit dem Ergebnis zufrieden sein, und als gegeben hinnehmen ohne Fallback. den eigentlich sollten jetzt beide "immer" ein sauberes Ergebnis liefern.<br />
<br />
Probiert doch gerne bei euch mal den Befehl<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ip route get 1.1.1.1 2&gt;/dev/null | awk '{for (i=1;i&lt;=NF;i++) if (&#36;i=="src") print &#36;(i+1)}'</code></div></div><br />
aus, und geb mir mit einem System Info dazu euer Ergebnis.<br />
...]]></description>
			<content:encoded><![CDATA[für mich ist es jetzt hier an der stelle noch " Guten Abend "<br />
Ich schlage mich gerade mich einem Problem rum, was zwei meiner Server betrifft.<br />
<br />
der <span style="font-weight: bold;" class="mycode_b">kleine</span> "Ubuntu 22.04.5 LTS" VServer und der <span style="font-weight: bold;" class="mycode_b">GROSSE</span> "Debian GNU/Linux 13 (trixie)"<br />
<br />
Mein vorhaben war, in einem bash script die system IP sicher zu ermitteln. mein erster Ansatz war der folgende<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ip route get 1.1.1.1 2&gt;/dev/null | awk '{print &#36;7; exit}'</code></div></div>Debian Liefert das richtige Ergebnis, Unbuntu leider nur eine leere Zeile.<br />
<br />
bei dem kleinen bekam ich die richtige antwort erst bei print <span style="font-weight: bold;" class="mycode_b">&#36;5</span> anstelle von print <span style="font-weight: bold;" class="mycode_b">&#36;7</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ip route get 1.1.1.1 2&gt;/dev/null | awk '{print &#36;5; exit}'</code></div></div><br />
ich habe danach raus bekommen, das Debian und Ubuntu da etwas anders die Daten zusammen setzen. Und deswegen bin ich auf eine zweite variante umgestiegen<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ip route get 1.1.1.1 2&gt;/dev/null | awk '{for (i=1;i&lt;=NF;i++) if (&#36;i=="src") print &#36;(i+1)}'</code></div></div><br />
Hier klaptt es jetzt...<br />
Da ich aber jemand bin, der immer eine "Fallback" Möglichkeit haben möchte, habe ich folgendes versucht.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>hostname -I | awk '{print &#36;1}'</code></div></div><br />
... und schon wieder baut der Ubuntu VServer misst, und gibt an der stelle "127.0.0.1" aus. Erst an stelle zwei &#36;2 ist die richtige IP. der Debian machte es auf Anhieb richtig unter &#36;1 richtig.<br />
<br />
was ich jetzt suche ist, eine Saubere, einfache Lösung, das ich beiden Systemen sage, prüfe deine Ausgabe. und wenn diese 127.0.0.1 sein sollte, nehme die nächste &#36;2.<br />
Oder ganz anderes eben, um sicher zu stellen, das beide  das gleiche Ergebnis liefern, also Ihre IP nach aussen !<br />
<br />
... nochmal Oder soll ich mit dem Ergebnis zufrieden sein, und als gegeben hinnehmen ohne Fallback. den eigentlich sollten jetzt beide "immer" ein sauberes Ergebnis liefern.<br />
<br />
Probiert doch gerne bei euch mal den Befehl<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ip route get 1.1.1.1 2&gt;/dev/null | awk '{for (i=1;i&lt;=NF;i++) if (&#36;i=="src") print &#36;(i+1)}'</code></div></div><br />
aus, und geb mir mit einem System Info dazu euer Ergebnis.<br />
...]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Problem mit einrichten eines screen Befehls]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=5104</link>
			<pubDate>Sun, 15 Jun 2025 11:12:05 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=3">Dorena Verne</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=5104</guid>
			<description><![CDATA[Ich zitiere mich mal aus einem anderen Thread von mir, wo bisher keine Reaktion erfolgte:<br />
<blockquote class="mycode_quote"><cite><span> (14.06.2025, 11:26)</span>Dorena Verne schrieb:  <a href="https://www.gridtalk.de/showthread.php?pid=57012#pid57012" class="quick_jump"></a></cite>Aber ein anderes Problemchen habe ich. Ich starte ja beide Instanzen mit screen, aber nur das erste funzt:<br />
<br />
Script1:<br />
<span style="font-weight: bold;" class="mycode_b">opensim.sh</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#!/bin/sh<br />
while :<br />
do<br />
cd /home/bin<br />
running=`ps ax|grep OpenSim.dll|grep -v grep`<br />
if [ -z "&#36;running" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# The Log Entry<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIME="OpenSim Down, Restarting: `date +"%A, %B %d - %r"`"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &#36;TIME &gt;&gt;/home/bin/os.log<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cd /home/bin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;screen -fa -S OS -d -U -m dotnet OpenSim.dll -gui=true -noverbose=true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep 120<br />
done</code></div></div><br />
Script2<br />
<span style="font-weight: bold;" class="mycode_b">opensim1.sh</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#!/bin/sh<br />
while :<br />
do<br />
cd /home/sim2/bin<br />
running=`ps ax|grep OpenSim.dll|grep -v grep`<br />
if [ -z "&#36;running" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# The Log Entry<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIME="OpenSim Down, Restarting: `date +"%A, %B %d - %r"`"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &#36;TIME &gt;&gt;/home/sim2/bin/os.log<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cd /home/sim2/bin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;screen -fa -S OS1 -d -U -m dotnet OpenSim.dll -gui=true -noverbose=true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep 120<br />
done</code></div></div><br />
Hat jemand eine Idee woran das liegen könnte?</blockquote>]]></description>
			<content:encoded><![CDATA[Ich zitiere mich mal aus einem anderen Thread von mir, wo bisher keine Reaktion erfolgte:<br />
<blockquote class="mycode_quote"><cite><span> (14.06.2025, 11:26)</span>Dorena Verne schrieb:  <a href="https://www.gridtalk.de/showthread.php?pid=57012#pid57012" class="quick_jump"></a></cite>Aber ein anderes Problemchen habe ich. Ich starte ja beide Instanzen mit screen, aber nur das erste funzt:<br />
<br />
Script1:<br />
<span style="font-weight: bold;" class="mycode_b">opensim.sh</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#!/bin/sh<br />
while :<br />
do<br />
cd /home/bin<br />
running=`ps ax|grep OpenSim.dll|grep -v grep`<br />
if [ -z "&#36;running" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# The Log Entry<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIME="OpenSim Down, Restarting: `date +"%A, %B %d - %r"`"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &#36;TIME &gt;&gt;/home/bin/os.log<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cd /home/bin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;screen -fa -S OS -d -U -m dotnet OpenSim.dll -gui=true -noverbose=true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep 120<br />
done</code></div></div><br />
Script2<br />
<span style="font-weight: bold;" class="mycode_b">opensim1.sh</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#!/bin/sh<br />
while :<br />
do<br />
cd /home/sim2/bin<br />
running=`ps ax|grep OpenSim.dll|grep -v grep`<br />
if [ -z "&#36;running" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# The Log Entry<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIME="OpenSim Down, Restarting: `date +"%A, %B %d - %r"`"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &#36;TIME &gt;&gt;/home/sim2/bin/os.log<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cd /home/sim2/bin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;screen -fa -S OS1 -d -U -m dotnet OpenSim.dll -gui=true -noverbose=true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep 120<br />
done</code></div></div><br />
Hat jemand eine Idee woran das liegen könnte?</blockquote>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Coffeetalk von Fosstopia - Monatliche Linux News]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=5065</link>
			<pubDate>Sat, 03 May 2025 11:46:32 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=329">LyAvain</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=5065</guid>
			<description><![CDATA[Moin...<br />
<br />
Immer Anfang des Monats bringt Michael Krümpel eine Zusammenfassung der News vom Vormonat aus dem Linux und Opensource Sektor... Er macht das ganz entspannt und locker und sehr informativ.<br />
Für Pinguin Nutzer könnte das ganz interessant sein, daher dachte ich mir, ich mache das mal publik.  <br />
<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/Z80gf8-iJzU" frameborder="0" allowfullscreen="true"></iframe><br />
<br />
Auch seine Tutorials sind immer sehr gut erklärt und können ganz hilfreich sein.<br />
<br />
Wünsche viel Spass beim Kaffee Gespräch (meinetwegen auch mit Tee, so wie bei mir <img src="https://www.gridtalk.de/images/smilies/biggrin.gif" alt="Big Grin" title="Big Grin" class="smilie smilie_4" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /> ).<br />
<br />
Liebe Grüsse<br />
Ly]]></description>
			<content:encoded><![CDATA[Moin...<br />
<br />
Immer Anfang des Monats bringt Michael Krümpel eine Zusammenfassung der News vom Vormonat aus dem Linux und Opensource Sektor... Er macht das ganz entspannt und locker und sehr informativ.<br />
Für Pinguin Nutzer könnte das ganz interessant sein, daher dachte ich mir, ich mache das mal publik.  <br />
<br />
<iframe width="560" height="315" src="//www.youtube-nocookie.com/embed/Z80gf8-iJzU" frameborder="0" allowfullscreen="true"></iframe><br />
<br />
Auch seine Tutorials sind immer sehr gut erklärt und können ganz hilfreich sein.<br />
<br />
Wünsche viel Spass beim Kaffee Gespräch (meinetwegen auch mit Tee, so wie bei mir <img src="https://www.gridtalk.de/images/smilies/biggrin.gif" alt="Big Grin" title="Big Grin" class="smilie smilie_4" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /> ).<br />
<br />
Liebe Grüsse<br />
Ly]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Medion Erazer P7644 und Linux Mint.]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=5018</link>
			<pubDate>Thu, 20 Mar 2025 14:21:51 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=3">Dorena Verne</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=5018</guid>
			<description><![CDATA[Es geht dabei um<a href="https://www.notebookcheck.com/Test-Aldi-Sued-Medion-Erazer-P7644-Notebook.156261.0.html" target="_blank" rel="noopener" class="mycode_url"> dieses Modell</a>, welches mich doch sehr überraschte. Habe ihn sehr günstig über Kleinanzeigen bekommen. Na ja, "Medion", kann ja nichts Dolles sein, mein erster Gedanke. Zustand, war Note 1, sogar der Tastaturschutz war noch dabei und die eingebaute SSD hat mir nach einer Überprüfung verraten, dass der Rechner, obwohl er bereits fast 10 Jahre auf den Buckel hat, nur so zwei Monate betrieben wurde.<br />
Installiert war Windows 10 mit allen Spielereien seitens Medion, quasi in Auslieferungszustand. <br />
<br />
Als Erstes habe ich ihn mit dem allerneusten Windows11 versehen, wo er schon ganz nett lief. Aber habe ja schon meinen HP-Laptop als Windowströte. Also einen USB-Stick mit Mint XFCE erstellt und installiert.<br />
Hier nochmal das Bild aus dem Desktop-Thread.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.gridtalk.de/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=9001" target="_blank" title="">Bildschirmfoto_2025-03-19_23-21-38.png</a> (Größe: 720,8 KB / Downloads: 274)
<!-- end: postbit_attachments_attachment --><br />
<br />
Läuft zügig, nette alte Kiste, dachte ich. OK, mal einen Firestorm darauf und eingeloggt. Grafik knapp über Mitteleinstellung. Rund 60FPS, whow, immerhin. Nichts ruckelt und ist somit sogar für OpenSim brauchbar.<br />
<br />
Grinsend dachte ich mir dann, na warte damit bekomme ich dich klein, lieber Medion. Lokal ein KI-Bild erstellen.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.gridtalk.de/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=9002" target="_blank" title="">Bildschirmfoto_2025-03-20_13-34-36.png</a> (Größe: 486,96 KB / Downloads: 257)
<!-- end: postbit_attachments_attachment --><br />
<br />
Ui, gar nicht mal übel, so ca 4 Min, aber immerhin.<img src="https://www.gridtalk.de/images/smilies/cool.gif" alt="Cool" title="Cool" class="smilie smilie_3" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /><br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.gridtalk.de/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=9003" target="_blank" title="">2025-03-20_13-21-55-absolutereality_v181-2093621128.png</a> (Größe: 359,42 KB / Downloads: 253)
<!-- end: postbit_attachments_attachment --><br />
<br />
Fazit:<br />
Man muss nicht immer alles glauben, was einem  einige Leute über den einen oder anderen Rechner einer ungeliebten Marke so meinen.<img src="https://www.gridtalk.de/images/smilies/wink.gif" alt="Wink" title="Wink" class="smilie smilie_2" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /><br />
<br />
Ergänzung:<br />
Hatte vergessen zu erwähnen das ich den Arbeitsspeicher von 8 auf 16 GIG erweitert habe.]]></description>
			<content:encoded><![CDATA[Es geht dabei um<a href="https://www.notebookcheck.com/Test-Aldi-Sued-Medion-Erazer-P7644-Notebook.156261.0.html" target="_blank" rel="noopener" class="mycode_url"> dieses Modell</a>, welches mich doch sehr überraschte. Habe ihn sehr günstig über Kleinanzeigen bekommen. Na ja, "Medion", kann ja nichts Dolles sein, mein erster Gedanke. Zustand, war Note 1, sogar der Tastaturschutz war noch dabei und die eingebaute SSD hat mir nach einer Überprüfung verraten, dass der Rechner, obwohl er bereits fast 10 Jahre auf den Buckel hat, nur so zwei Monate betrieben wurde.<br />
Installiert war Windows 10 mit allen Spielereien seitens Medion, quasi in Auslieferungszustand. <br />
<br />
Als Erstes habe ich ihn mit dem allerneusten Windows11 versehen, wo er schon ganz nett lief. Aber habe ja schon meinen HP-Laptop als Windowströte. Also einen USB-Stick mit Mint XFCE erstellt und installiert.<br />
Hier nochmal das Bild aus dem Desktop-Thread.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.gridtalk.de/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=9001" target="_blank" title="">Bildschirmfoto_2025-03-19_23-21-38.png</a> (Größe: 720,8 KB / Downloads: 274)
<!-- end: postbit_attachments_attachment --><br />
<br />
Läuft zügig, nette alte Kiste, dachte ich. OK, mal einen Firestorm darauf und eingeloggt. Grafik knapp über Mitteleinstellung. Rund 60FPS, whow, immerhin. Nichts ruckelt und ist somit sogar für OpenSim brauchbar.<br />
<br />
Grinsend dachte ich mir dann, na warte damit bekomme ich dich klein, lieber Medion. Lokal ein KI-Bild erstellen.<br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.gridtalk.de/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=9002" target="_blank" title="">Bildschirmfoto_2025-03-20_13-34-36.png</a> (Größe: 486,96 KB / Downloads: 257)
<!-- end: postbit_attachments_attachment --><br />
<br />
Ui, gar nicht mal übel, so ca 4 Min, aber immerhin.<img src="https://www.gridtalk.de/images/smilies/cool.gif" alt="Cool" title="Cool" class="smilie smilie_3" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /><br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.gridtalk.de/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=9003" target="_blank" title="">2025-03-20_13-21-55-absolutereality_v181-2093621128.png</a> (Größe: 359,42 KB / Downloads: 253)
<!-- end: postbit_attachments_attachment --><br />
<br />
Fazit:<br />
Man muss nicht immer alles glauben, was einem  einige Leute über den einen oder anderen Rechner einer ungeliebten Marke so meinen.<img src="https://www.gridtalk.de/images/smilies/wink.gif" alt="Wink" title="Wink" class="smilie smilie_2" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /><br />
<br />
Ergänzung:<br />
Hatte vergessen zu erwähnen das ich den Arbeitsspeicher von 8 auf 16 GIG erweitert habe.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Seltsamer Fehler mit Skype und Mikrofon]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=5016</link>
			<pubDate>Mon, 10 Mar 2025 15:25:06 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=1724">Holger Berger</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=5016</guid>
			<description><![CDATA[Seltsamer Fehler mit Skype und Mikrofon!<br />
<br />
Bei jedem Neustart vom Rechner (Linux Mint 21 Vanessa) ist mein Mikrofon vom Headset innerhalb der Software Skype verschwunden. Unter Audio/video wird kein Mikrofon erkannt. Ich muss mein Mikrofon jeden Tag neu ab und wieder anstöpseln und Skype neu starten.<br />
<br />
Danach funktioniert es wieder wunderbar. Hat jemand eventuell eine Idee woran das liegen könnte?<br />
Ich danke Euch!]]></description>
			<content:encoded><![CDATA[Seltsamer Fehler mit Skype und Mikrofon!<br />
<br />
Bei jedem Neustart vom Rechner (Linux Mint 21 Vanessa) ist mein Mikrofon vom Headset innerhalb der Software Skype verschwunden. Unter Audio/video wird kein Mikrofon erkannt. Ich muss mein Mikrofon jeden Tag neu ab und wieder anstöpseln und Skype neu starten.<br />
<br />
Danach funktioniert es wieder wunderbar. Hat jemand eventuell eine Idee woran das liegen könnte?<br />
Ich danke Euch!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Euer Raspberry Pi Desktop]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=5013</link>
			<pubDate>Sat, 08 Mar 2025 21:24:47 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=1666">DJ Archie</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=5013</guid>
			<description><![CDATA[<span style="font-family: Sans-serif;" class="mycode_font"><span style="font-size: medium;" class="mycode_size">Mein derzeitiger Raspberry Pi 4 Modell B (4 GB RAM). <img src="https://www.gridtalk.de/images/smilies/blush.gif" alt="Blush" title="Blush" class="smilie smilie_12" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /></span></span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.gridtalk.de/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=8906" target="_blank" title="">20250308_20h56m23s_grim.png</a> (Größe: 167,06 KB / Downloads: 267)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-family: Sans-serif;" class="mycode_font"><span style="font-size: medium;" class="mycode_size">Mein derzeitiger Raspberry Pi 4 Modell B (4 GB RAM). <img src="https://www.gridtalk.de/images/smilies/blush.gif" alt="Blush" title="Blush" class="smilie smilie_12" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /></span></span><br />
<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.gridtalk.de/images/attachtypes/image.gif" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=8906" target="_blank" title="">20250308_20h56m23s_grim.png</a> (Größe: 167,06 KB / Downloads: 267)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Odyssee für den Weltraum - Aktuelles Linux gesucht...]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=4995</link>
			<pubDate>Wed, 19 Feb 2025 10:59:21 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=329">LyAvain</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=4995</guid>
			<description><![CDATA[Moin...<br />
<br />
Ich benutzte ja bis vorgestern noch Pop!OS 22.04 LTS... War auch zufrieden damit. Für Games und Problemlosigkeit mit Nvidia Karten war es "das" Linux. Die gepimpte Gnome Version (die sich bei mir wie Gnome 3 verhielt) machte auch die Bedienung leicht und angenehm (wenn man sich auf das Bedienkonzept von Gnome Shell 3 einlassen kann)...<br />
Also warum wechseln? Ich spiele Spiele... Und die wenigsten davon gibt es nativ als Linuxversion. Also muss Wine ran, oder eben Proton. Die eine und sehr unkomplizierte Lösung ist Steam... Aber wenn man mit der gigantischen Krake nix mehr zu tun haben will, muss man sich andere Lösungen suchen, z.B. Lutris. Funktioniert auch super... Inkl. GOG- , Steam- und EA-, Onyx- Ubitstore- und Epicstoreaccount... <br />
Allerdings hat sich in den letzten 2 Jahren auf diesem Sektor für Linux sehr viel getan. Vor allem dank Steam mit seinem Steamdeck... So schnelle Fortschritte hat Wine lange nicht gemacht. Und Pop!OS 22.04 LTS ist bald drei Jahre alt und damit die Wine Version auch... 6.x ist einfach ALT!!! Wine ist mittlerweile bei 10.x angekommen. Star Citizen läuft damit gut, aber Screenshots oder einfach nur mal auf den Desktop wechseln sind Russisch Roulette... Endet öfter mal im Crash des Spiels. <br />
<br />
Also dachte ich mir: "probier mal Pop!OS 24.04 LTS beta5 aus"... Installation super simpel... Alles wurde erkannt... Soweit so gut. <br />
Dann wollte ich den Papierkorb löschen und bekam eine Fehlermeldung... Müll wegwerfen nicht möglich.  <img src="https://www.gridtalk.de/images/smilies/confused.gif" alt="Confused" title="Confused" class="smilie smilie_13" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /> Ärgs... Schon Müll... Davon abgesehen, dass mir Cosmos, der neue Desktop von Pop!OS, nicht gefiel. Er friert Gnome auf der Bedienung der Version 4.0-4.2 ein. Dem Gnome, das mir, neben Gnome 2, am wenigsten gefiel von der Bedienung her... Also umgeschaut, was sich an der Linux Front so getan hat in den letzten 5 Jahren (solange benutze ich schon Pop!OS)... <br />
<br />
Dank Aki kam ich sehr schnell auf EndevourOS. Ein bedienbarer Ableger von Arch Linux... Also ausprobiert. Installation für ein Arch Linux echt super einfach. Hardware wird out of the Box erkannt... Spiele laufen alle... Bis auf Star Citizen... Grml... Aber der aktuelle Gnome 4.7 Desktop lässt sich wieder ähnlich toll bedienen, wie die Gnome 3.x Versionen... Sehr schön. Gefällt mir bis auf wenige Sachen sogar besser als Gnome 3. Und das soll was heissen...<br />
<br />
Weiter umgeguckt. Ah, Fedora... Vor Urzeiten mal benutzt. Also mal geschaut, wie es jetzt funzt... Laut Videobeiträgen soll das auch gut mit Games laufen, Nvidia ab Werk auch kein Problem... *hust* Wenn es denn mal fehlerfrei installieren würde. Kurz vor Ende knallt die Installation mit einem Fehler weg und bietet einem nur "Installation beenden" an... Na toll... <img src="https://www.gridtalk.de/images/smilies/undecided.gif" alt="Undecided" title="Undecided" class="smilie smilie_20" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /><br />
<br />
Debian hatte ich vor Pop!OS sehr lange und war zufrieden, bis Skyrim nicht mehr wollte (warum auch immer). Daher der Umstieg zu Pop!OS... Also guckte ich mir die altehrwürdige Linux Distribution mal wieder an... Und siehe da. Man muss nicht mal mehr die "Nonfree" Version benutzen, um Thirdparty Treiber und Libraries benutzen zu können. Ist alles in der normalen Distro drin. Fein... Installation, wie Debian typisch, sehr komfortabel (man kann viel schon im Installationsprozess konfigurieren)... <br />
Alles lief... Nvidia Treiber liess sich direkt aus dem Repo installieren, etwas umständlich, aber machbar... Alles lief... Sehr schön... Bis Starcitizen beim Start meckerte, dass Vulkan nicht richtig implementiert sei und es auf DiectX umstellte... Man... Es läuft damit zwar auch, aber dank der besch...eidenen Shaderberechnungen von DirectX, hat man immer wieder Nachladeruckler, die echt nerven... Bei um die 30 FPS immer wieder Ruckelorgien zu haben, ist ätzend. <br />
<br />
Dann hatte ich eine Idee... Pop!OS 24.04 LTS mit Gnome 4.7... Also getestet. Ja, funzt... Allerdings wollen die Spiele nicht so richtig... Und das noch schlechter, als bei EndevourOS... Na toll... Grml... Back to Pop!OS 22.04 LTS... Das läuft wenigstens, bis auf das Russisch Roulette bei Screenshots im Star Citizen. <br />
Müde machte ich erstmal einen (Nach)Mittagsschlaf... Aber das Ganze liess mir keine Ruhe. Nach dem Abendessen recherchierte ich weiter...<br />
<br />
Und langsam schlich sich eine Distro in den Vordergrund, die ich jedem Linux Neuling empfohlen und sogar auch installiert habe... Umstieg von Windows dank Cinnamon oder Mate nicht so ein grosser Kuturschock, wie bei anderen Desktops. Hardware einfach einzurichten und zu warten. Programmverwaltung einfach und übersichtlich (sehr ähnlich, wie Apps auf dem Handy)... Und was mir sehr gefiel, es benutzt eine recht aktuelle Wine Version und hat auch generell immer recht aktuelle Softwareversionen. Wie Ubuntu, auf dem es ja auch basiert. Nur ohne die merkwürdigen Features von Canonical, die mir Ubuntu unterjubeln will, ob ich sie haben will, oder nicht. <br />
Ich bin zwar gar kein Fan von der Windoof ähnlichen Bedienung von Cinnamon und Mate (das wie Gnome 2 aussieht), aber Linux ist ja so klasse, weil man es sich eben so zurecht stricken kann, wie man möchte... Mint + Gnome 4.7... Mal ausprobieren. <br />
Installation geht, wie bei den meisten Ubuntu Derivaten, fix und einfach... Hardwaretreiber (Nvidia) ist simpel und schnell installiert (wie bei Ubuntu üblich). Alles andere läuft out of the Box. Softwareverwaltung ist auch super. Allerdings habe ich Synaptic dafür lieb gewonnen. Also installiert... Bevor ich irgendwelche Zusatzprogramme, wie Gimp, Audacitity, Blender etc. angefasst habe, Gnome 4.7 drauf... Ok... Schnell noch Nautilus nachgeschoben (den von Debian und anderen Gnome Umgebungen benutzten Fenstermanager), da mir die Cinnamon eigenen Fenster (keine Ahnung, wie der Fenstermanager heisst), die weiter benutzt wurden, nicht gefielen. Rechner einmal neu gestartet und unter Gnome 4.7 weiter gemacht. Lutris drauf und (Luft angehalten) Star Citzen gestartet. Voila... Lief sauber unter Vulkan und was mir noch mehr gefiel, ich hatte gefühlt mehr Performance... Also Konsole auf und... Öh... Konsole??? Wieso nimmt Star Citizen meine Sonderzeichen nicht??? Nachgeforscht... Ah... DE (no deadkeys) aktiviert... Und... Konsole liess sich öffnen... Aber... Ä, Ö und Ü wollen immer noch nicht. Und Ü ist verdammt wichtig in SC... Ü wie "Ükzeptieren" bzw. "Übereifrig Nicken!!!"... Ohne Ü kann man nix bestätigen, keine Freundschaftsanfrage, Partyeinladung, Anzeige eines Spielers wegen Mord, Sachbeschädigung etc... Ich fand dann aber fix die Lösung. Parallel auch US Tastatur aktiviert. Mit der Windooftaste+Space kann ich schnell zwischen DE und US wechseln, sogar mitten im Spiel... Allerdings muss ich das garnicht. Sogar mit US schreibt die Tastatur im Chat mit Umlauten... Keine Ahnung wieso, aber das macht es unkomlizierter.<br />
Nun konnte ich auch meine FPS abfragen. Und was soll ich sagen? Mein Gefühl hat sich bestätigt... Statt um die 20 FPS in New Babbage habe ich nun kurz vor 30 FPS... <img src="https://www.gridtalk.de/images/smilies/shy.gif" alt="Shy" title="Shy" class="smilie smilie_7" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" />  Wie geil ist das denn? Ausserdem ist das Russisch Roulette fast beendet... Screenshots null Problemo, hab in wenigen Sekunden 50 Screenshots gespammt und nix abgestürzt... Dann Desktopwechsel... Nach zig Desktopwechseln ohne Problemen, ist dann der Client weggeknallt... Aber das passiert auch unter Windows ab un zu... Also alles im grünen Bereich. <img src="https://www.gridtalk.de/images/smilies/cool.gif" alt="Cool" title="Cool" class="smilie smilie_3" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /> <br />
<br />
Fazit: Mint ist auch für Nichtanfänger echt super...<br />
<br />
<br />
<img src="https://i.postimg.cc/V6g19Bfh/Screenshot-from-2025-02-18-21-19-30.jpg" loading="lazy"  alt="[Bild: Screenshot-from-2025-02-18-21-19-30.jpg]" class="mycode_img" /><br />
<br />
Desktop Gnome typisch aufgeräumt... So mag ich das... Ich hasse Icons auf dem Desktop.  <img src="https://www.gridtalk.de/images/smilies/biggrin.gif" alt="Big Grin" title="Big Grin" class="smilie smilie_4" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /> <br />
<br />
<br />
<img src="https://i.postimg.cc/J0h8pDtz/Screenshot-from-2025-02-18-21-19-46.jpg" loading="lazy"  alt="[Bild: Screenshot-from-2025-02-18-21-19-46.jpg]" class="mycode_img" /><br />
<br />
Mit Nautilus sehen die Fenster auch so aus, wie ich es mag... Bedienung ist halt die von Gnome 4.7... <br />
<br />
<br />
<img src="https://i.postimg.cc/xCNjQbnp/Screenshot-from-2025-02-19-10-10-23.jpg" loading="lazy"  alt="[Bild: Screenshot-from-2025-02-19-10-10-23.jpg]" class="mycode_img" /><br />
<br />
Wer allerdings die Bedinung von Cinnamon mehr mag (was die Fenster angeht), der muss Nautilus natürlich nicht installieren... Ist halt Geschmackssache... Und die beiden Windowmanager laufen auch parallel. So, wie bei mir... Hab nix vom vorinstallierten Mint rausgeschmissen. Unten rechts ist das Fenster vom Cinnamon Desktop, oben links das von Nautilus (Gnome Shell)... <br />
<br />
<br />
<img src="https://i.postimg.cc/3NbTV8DC/Screenshot-from-2025-02-18-21-47-43.jpg" loading="lazy"  alt="[Bild: Screenshot-from-2025-02-18-21-47-43.jpg]" class="mycode_img" /><br />
<br />
Die sehr schnell und einfach zu bedienende Arbeitsebene von Gnome 4.7... Ich liebe es, im System zu navigieren, Desktops zu wechseln, Dateien und Programme zu suchen und zu starten, ohne mich ein einziges Mal durch Menüs oder Fenster klicken zu müssen. Genau das habe ich bei Gnome 3 lieben gelernt. Die Bedinung mit 1-2 Tastaturanschlägen und Maus parallel (ähnlich, wie bei AutoCAD)... Programme, die man öfter benutzt, kann man in der Schnellstartleiste parken. Für alle anderen muss man 1-2 Buchstaben eintippen (die Suche startet automatisch beim ersten Tastenanschlag)... Und meistens wird das gesuchte Programm dann schon angezeigt, ein Klick oder die Entertaste und voila. Das wars... Files findet man genauso schnell.  <br />
<br />
<br />
<img src="https://i.postimg.cc/2jHrVwXb/Screenshot-from-2025-02-18-21-21-47.jpg" loading="lazy"  alt="[Bild: Screenshot-from-2025-02-18-21-21-47.jpg]" class="mycode_img" /><br />
<br />
Und das Ganze funktioniert auch mit laufendem Star Citzen... Auf den Desktop wechseln, oder den virtuellen Bildschirm wechseln, um den Browser zwecks Infosuche zu starten, handelsplaner.de z.B. oder Erkul Games für Schiffskonfigurationen, SC Wiki und was sonst noch so gebraucht wird. Auch Snareplan um zu gucken, wo Piraten lauern könnten. Das ist zwar das Tool einer grossen deutschen Piraten Orga, aber sie sind immerhin so fair und stellen es allen zur Verfügung (auch ihren Opfern, den Händlern <img src="https://www.gridtalk.de/images/smilies/tongue.gif" alt="Tongue" title="Tongue" class="smilie smilie_5" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" />  )... Und das geht jetzt OHNE sofortigen Crash...  So mag ich das.<br />
<br />
Eine über 24 stündige Odyssee (natürlich mit Schlaf- und Essenspausen) durch das Linux Universum, findet erfolgreich ein Ende... Und wenn mich ein Linux Veteran mal fragen sollte, welches Linux ist eigentlich für Spiele gut? Dann kommt, statt wie bisher Pop!OS, genau wie bei einem Anfänger, die Antwort: Mint! <br />
Einfacher gehts nicht...  <img src="https://www.gridtalk.de/images/smilies/biggrin.gif" alt="Big Grin" title="Big Grin" class="smilie smilie_4" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /> <br />
<br />
Damit bin ich wieder aktuell... Sehr schön. <br />
<br />
Liebe Grüsse<br />
Ly]]></description>
			<content:encoded><![CDATA[Moin...<br />
<br />
Ich benutzte ja bis vorgestern noch Pop!OS 22.04 LTS... War auch zufrieden damit. Für Games und Problemlosigkeit mit Nvidia Karten war es "das" Linux. Die gepimpte Gnome Version (die sich bei mir wie Gnome 3 verhielt) machte auch die Bedienung leicht und angenehm (wenn man sich auf das Bedienkonzept von Gnome Shell 3 einlassen kann)...<br />
Also warum wechseln? Ich spiele Spiele... Und die wenigsten davon gibt es nativ als Linuxversion. Also muss Wine ran, oder eben Proton. Die eine und sehr unkomplizierte Lösung ist Steam... Aber wenn man mit der gigantischen Krake nix mehr zu tun haben will, muss man sich andere Lösungen suchen, z.B. Lutris. Funktioniert auch super... Inkl. GOG- , Steam- und EA-, Onyx- Ubitstore- und Epicstoreaccount... <br />
Allerdings hat sich in den letzten 2 Jahren auf diesem Sektor für Linux sehr viel getan. Vor allem dank Steam mit seinem Steamdeck... So schnelle Fortschritte hat Wine lange nicht gemacht. Und Pop!OS 22.04 LTS ist bald drei Jahre alt und damit die Wine Version auch... 6.x ist einfach ALT!!! Wine ist mittlerweile bei 10.x angekommen. Star Citizen läuft damit gut, aber Screenshots oder einfach nur mal auf den Desktop wechseln sind Russisch Roulette... Endet öfter mal im Crash des Spiels. <br />
<br />
Also dachte ich mir: "probier mal Pop!OS 24.04 LTS beta5 aus"... Installation super simpel... Alles wurde erkannt... Soweit so gut. <br />
Dann wollte ich den Papierkorb löschen und bekam eine Fehlermeldung... Müll wegwerfen nicht möglich.  <img src="https://www.gridtalk.de/images/smilies/confused.gif" alt="Confused" title="Confused" class="smilie smilie_13" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /> Ärgs... Schon Müll... Davon abgesehen, dass mir Cosmos, der neue Desktop von Pop!OS, nicht gefiel. Er friert Gnome auf der Bedienung der Version 4.0-4.2 ein. Dem Gnome, das mir, neben Gnome 2, am wenigsten gefiel von der Bedienung her... Also umgeschaut, was sich an der Linux Front so getan hat in den letzten 5 Jahren (solange benutze ich schon Pop!OS)... <br />
<br />
Dank Aki kam ich sehr schnell auf EndevourOS. Ein bedienbarer Ableger von Arch Linux... Also ausprobiert. Installation für ein Arch Linux echt super einfach. Hardware wird out of the Box erkannt... Spiele laufen alle... Bis auf Star Citizen... Grml... Aber der aktuelle Gnome 4.7 Desktop lässt sich wieder ähnlich toll bedienen, wie die Gnome 3.x Versionen... Sehr schön. Gefällt mir bis auf wenige Sachen sogar besser als Gnome 3. Und das soll was heissen...<br />
<br />
Weiter umgeguckt. Ah, Fedora... Vor Urzeiten mal benutzt. Also mal geschaut, wie es jetzt funzt... Laut Videobeiträgen soll das auch gut mit Games laufen, Nvidia ab Werk auch kein Problem... *hust* Wenn es denn mal fehlerfrei installieren würde. Kurz vor Ende knallt die Installation mit einem Fehler weg und bietet einem nur "Installation beenden" an... Na toll... <img src="https://www.gridtalk.de/images/smilies/undecided.gif" alt="Undecided" title="Undecided" class="smilie smilie_20" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /><br />
<br />
Debian hatte ich vor Pop!OS sehr lange und war zufrieden, bis Skyrim nicht mehr wollte (warum auch immer). Daher der Umstieg zu Pop!OS... Also guckte ich mir die altehrwürdige Linux Distribution mal wieder an... Und siehe da. Man muss nicht mal mehr die "Nonfree" Version benutzen, um Thirdparty Treiber und Libraries benutzen zu können. Ist alles in der normalen Distro drin. Fein... Installation, wie Debian typisch, sehr komfortabel (man kann viel schon im Installationsprozess konfigurieren)... <br />
Alles lief... Nvidia Treiber liess sich direkt aus dem Repo installieren, etwas umständlich, aber machbar... Alles lief... Sehr schön... Bis Starcitizen beim Start meckerte, dass Vulkan nicht richtig implementiert sei und es auf DiectX umstellte... Man... Es läuft damit zwar auch, aber dank der besch...eidenen Shaderberechnungen von DirectX, hat man immer wieder Nachladeruckler, die echt nerven... Bei um die 30 FPS immer wieder Ruckelorgien zu haben, ist ätzend. <br />
<br />
Dann hatte ich eine Idee... Pop!OS 24.04 LTS mit Gnome 4.7... Also getestet. Ja, funzt... Allerdings wollen die Spiele nicht so richtig... Und das noch schlechter, als bei EndevourOS... Na toll... Grml... Back to Pop!OS 22.04 LTS... Das läuft wenigstens, bis auf das Russisch Roulette bei Screenshots im Star Citizen. <br />
Müde machte ich erstmal einen (Nach)Mittagsschlaf... Aber das Ganze liess mir keine Ruhe. Nach dem Abendessen recherchierte ich weiter...<br />
<br />
Und langsam schlich sich eine Distro in den Vordergrund, die ich jedem Linux Neuling empfohlen und sogar auch installiert habe... Umstieg von Windows dank Cinnamon oder Mate nicht so ein grosser Kuturschock, wie bei anderen Desktops. Hardware einfach einzurichten und zu warten. Programmverwaltung einfach und übersichtlich (sehr ähnlich, wie Apps auf dem Handy)... Und was mir sehr gefiel, es benutzt eine recht aktuelle Wine Version und hat auch generell immer recht aktuelle Softwareversionen. Wie Ubuntu, auf dem es ja auch basiert. Nur ohne die merkwürdigen Features von Canonical, die mir Ubuntu unterjubeln will, ob ich sie haben will, oder nicht. <br />
Ich bin zwar gar kein Fan von der Windoof ähnlichen Bedienung von Cinnamon und Mate (das wie Gnome 2 aussieht), aber Linux ist ja so klasse, weil man es sich eben so zurecht stricken kann, wie man möchte... Mint + Gnome 4.7... Mal ausprobieren. <br />
Installation geht, wie bei den meisten Ubuntu Derivaten, fix und einfach... Hardwaretreiber (Nvidia) ist simpel und schnell installiert (wie bei Ubuntu üblich). Alles andere läuft out of the Box. Softwareverwaltung ist auch super. Allerdings habe ich Synaptic dafür lieb gewonnen. Also installiert... Bevor ich irgendwelche Zusatzprogramme, wie Gimp, Audacitity, Blender etc. angefasst habe, Gnome 4.7 drauf... Ok... Schnell noch Nautilus nachgeschoben (den von Debian und anderen Gnome Umgebungen benutzten Fenstermanager), da mir die Cinnamon eigenen Fenster (keine Ahnung, wie der Fenstermanager heisst), die weiter benutzt wurden, nicht gefielen. Rechner einmal neu gestartet und unter Gnome 4.7 weiter gemacht. Lutris drauf und (Luft angehalten) Star Citzen gestartet. Voila... Lief sauber unter Vulkan und was mir noch mehr gefiel, ich hatte gefühlt mehr Performance... Also Konsole auf und... Öh... Konsole??? Wieso nimmt Star Citizen meine Sonderzeichen nicht??? Nachgeforscht... Ah... DE (no deadkeys) aktiviert... Und... Konsole liess sich öffnen... Aber... Ä, Ö und Ü wollen immer noch nicht. Und Ü ist verdammt wichtig in SC... Ü wie "Ükzeptieren" bzw. "Übereifrig Nicken!!!"... Ohne Ü kann man nix bestätigen, keine Freundschaftsanfrage, Partyeinladung, Anzeige eines Spielers wegen Mord, Sachbeschädigung etc... Ich fand dann aber fix die Lösung. Parallel auch US Tastatur aktiviert. Mit der Windooftaste+Space kann ich schnell zwischen DE und US wechseln, sogar mitten im Spiel... Allerdings muss ich das garnicht. Sogar mit US schreibt die Tastatur im Chat mit Umlauten... Keine Ahnung wieso, aber das macht es unkomlizierter.<br />
Nun konnte ich auch meine FPS abfragen. Und was soll ich sagen? Mein Gefühl hat sich bestätigt... Statt um die 20 FPS in New Babbage habe ich nun kurz vor 30 FPS... <img src="https://www.gridtalk.de/images/smilies/shy.gif" alt="Shy" title="Shy" class="smilie smilie_7" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" />  Wie geil ist das denn? Ausserdem ist das Russisch Roulette fast beendet... Screenshots null Problemo, hab in wenigen Sekunden 50 Screenshots gespammt und nix abgestürzt... Dann Desktopwechsel... Nach zig Desktopwechseln ohne Problemen, ist dann der Client weggeknallt... Aber das passiert auch unter Windows ab un zu... Also alles im grünen Bereich. <img src="https://www.gridtalk.de/images/smilies/cool.gif" alt="Cool" title="Cool" class="smilie smilie_3" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /> <br />
<br />
Fazit: Mint ist auch für Nichtanfänger echt super...<br />
<br />
<br />
<img src="https://i.postimg.cc/V6g19Bfh/Screenshot-from-2025-02-18-21-19-30.jpg" loading="lazy"  alt="[Bild: Screenshot-from-2025-02-18-21-19-30.jpg]" class="mycode_img" /><br />
<br />
Desktop Gnome typisch aufgeräumt... So mag ich das... Ich hasse Icons auf dem Desktop.  <img src="https://www.gridtalk.de/images/smilies/biggrin.gif" alt="Big Grin" title="Big Grin" class="smilie smilie_4" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /> <br />
<br />
<br />
<img src="https://i.postimg.cc/J0h8pDtz/Screenshot-from-2025-02-18-21-19-46.jpg" loading="lazy"  alt="[Bild: Screenshot-from-2025-02-18-21-19-46.jpg]" class="mycode_img" /><br />
<br />
Mit Nautilus sehen die Fenster auch so aus, wie ich es mag... Bedienung ist halt die von Gnome 4.7... <br />
<br />
<br />
<img src="https://i.postimg.cc/xCNjQbnp/Screenshot-from-2025-02-19-10-10-23.jpg" loading="lazy"  alt="[Bild: Screenshot-from-2025-02-19-10-10-23.jpg]" class="mycode_img" /><br />
<br />
Wer allerdings die Bedinung von Cinnamon mehr mag (was die Fenster angeht), der muss Nautilus natürlich nicht installieren... Ist halt Geschmackssache... Und die beiden Windowmanager laufen auch parallel. So, wie bei mir... Hab nix vom vorinstallierten Mint rausgeschmissen. Unten rechts ist das Fenster vom Cinnamon Desktop, oben links das von Nautilus (Gnome Shell)... <br />
<br />
<br />
<img src="https://i.postimg.cc/3NbTV8DC/Screenshot-from-2025-02-18-21-47-43.jpg" loading="lazy"  alt="[Bild: Screenshot-from-2025-02-18-21-47-43.jpg]" class="mycode_img" /><br />
<br />
Die sehr schnell und einfach zu bedienende Arbeitsebene von Gnome 4.7... Ich liebe es, im System zu navigieren, Desktops zu wechseln, Dateien und Programme zu suchen und zu starten, ohne mich ein einziges Mal durch Menüs oder Fenster klicken zu müssen. Genau das habe ich bei Gnome 3 lieben gelernt. Die Bedinung mit 1-2 Tastaturanschlägen und Maus parallel (ähnlich, wie bei AutoCAD)... Programme, die man öfter benutzt, kann man in der Schnellstartleiste parken. Für alle anderen muss man 1-2 Buchstaben eintippen (die Suche startet automatisch beim ersten Tastenanschlag)... Und meistens wird das gesuchte Programm dann schon angezeigt, ein Klick oder die Entertaste und voila. Das wars... Files findet man genauso schnell.  <br />
<br />
<br />
<img src="https://i.postimg.cc/2jHrVwXb/Screenshot-from-2025-02-18-21-21-47.jpg" loading="lazy"  alt="[Bild: Screenshot-from-2025-02-18-21-21-47.jpg]" class="mycode_img" /><br />
<br />
Und das Ganze funktioniert auch mit laufendem Star Citzen... Auf den Desktop wechseln, oder den virtuellen Bildschirm wechseln, um den Browser zwecks Infosuche zu starten, handelsplaner.de z.B. oder Erkul Games für Schiffskonfigurationen, SC Wiki und was sonst noch so gebraucht wird. Auch Snareplan um zu gucken, wo Piraten lauern könnten. Das ist zwar das Tool einer grossen deutschen Piraten Orga, aber sie sind immerhin so fair und stellen es allen zur Verfügung (auch ihren Opfern, den Händlern <img src="https://www.gridtalk.de/images/smilies/tongue.gif" alt="Tongue" title="Tongue" class="smilie smilie_5" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" />  )... Und das geht jetzt OHNE sofortigen Crash...  So mag ich das.<br />
<br />
Eine über 24 stündige Odyssee (natürlich mit Schlaf- und Essenspausen) durch das Linux Universum, findet erfolgreich ein Ende... Und wenn mich ein Linux Veteran mal fragen sollte, welches Linux ist eigentlich für Spiele gut? Dann kommt, statt wie bisher Pop!OS, genau wie bei einem Anfänger, die Antwort: Mint! <br />
Einfacher gehts nicht...  <img src="https://www.gridtalk.de/images/smilies/biggrin.gif" alt="Big Grin" title="Big Grin" class="smilie smilie_4" onclick="&#36;.markItUp({target:markitup_instance,replaceWith:''});&#36;.modal.close()" /> <br />
<br />
Damit bin ich wieder aktuell... Sehr schön. <br />
<br />
Liebe Grüsse<br />
Ly]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Richtige Dateirechte und Rechtevergabe für OpenSim]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=4972</link>
			<pubDate>Thu, 09 Jan 2025 12:29:20 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=1724">Holger Berger</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=4972</guid>
			<description><![CDATA[Richtige Dateirechte und Rechtevergabe für OpenSim mit chmod unter Ubuntu-Linux<br />
<br />
Unter Linux sollte man die richtigen Dateirechte für die Installation, Ordner, Unterordner und Installationsdateien mit 'chmod Zahlenwert' festlegen.<br />
<br />
Wie sieht die Rechtevergabe auf einer Server-Produktivumgebung eigentlich aus? Eventuell nur den Installationsorder auf 700 zu setzen scheint mir unzureichend.<br />
<br />
Ja, scheint aufwendiger zu sein. Hier benötigt man einfach Erfahrung.<br />
<br />
Ich danke für Eure Meinungen, Hinweise, Rückmeldungen etc.]]></description>
			<content:encoded><![CDATA[Richtige Dateirechte und Rechtevergabe für OpenSim mit chmod unter Ubuntu-Linux<br />
<br />
Unter Linux sollte man die richtigen Dateirechte für die Installation, Ordner, Unterordner und Installationsdateien mit 'chmod Zahlenwert' festlegen.<br />
<br />
Wie sieht die Rechtevergabe auf einer Server-Produktivumgebung eigentlich aus? Eventuell nur den Installationsorder auf 700 zu setzen scheint mir unzureichend.<br />
<br />
Ja, scheint aufwendiger zu sein. Hier benötigt man einfach Erfahrung.<br />
<br />
Ich danke für Eure Meinungen, Hinweise, Rückmeldungen etc.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[OpenSim und die neue Version 0.9.3.0]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=4963</link>
			<pubDate>Tue, 24 Dec 2024 16:39:10 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=1724">Holger Berger</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=4963</guid>
			<description><![CDATA[OpenSim und die neue Version 0.9.3.0 setzt nach meinen Informationen "dotnet-runtime-8.0 libgdiplus" vorraus. Wie lange können wir eigentlich noch das klassische mono für OpenSim mit älteren Versionen auf Ubuntu-Server nutzen?<br />
<br />
Ist es richtig, dass früher oder später alle OpenSim-Server ab Version 0.9.3.0 auf "dotnet" umgestellt werden müssen?<br />
<br />
Möglicherweise hat jemand eine Anleitung zur Installation dotnet-runtime-8.0 libgdiplus unter Ubuntu (22,24)<br />
<br />
Ich verstehe auch nicht, dass dotnet Robust.dll und dotnet OpenSim.dll in der Konsole zum START verwendet wird. <br />
<br />
Hatten wir doch immer "mono OpenSim" oder "mono Robust.exe" genommen.<br />
<br />
Ich danke für Eure Meinungen, Hinweise, Rückmeldungen etc.<br />
<br />
Frohe Weihnachten!<br />
<br />
Holger]]></description>
			<content:encoded><![CDATA[OpenSim und die neue Version 0.9.3.0 setzt nach meinen Informationen "dotnet-runtime-8.0 libgdiplus" vorraus. Wie lange können wir eigentlich noch das klassische mono für OpenSim mit älteren Versionen auf Ubuntu-Server nutzen?<br />
<br />
Ist es richtig, dass früher oder später alle OpenSim-Server ab Version 0.9.3.0 auf "dotnet" umgestellt werden müssen?<br />
<br />
Möglicherweise hat jemand eine Anleitung zur Installation dotnet-runtime-8.0 libgdiplus unter Ubuntu (22,24)<br />
<br />
Ich verstehe auch nicht, dass dotnet Robust.dll und dotnet OpenSim.dll in der Konsole zum START verwendet wird. <br />
<br />
Hatten wir doch immer "mono OpenSim" oder "mono Robust.exe" genommen.<br />
<br />
Ich danke für Eure Meinungen, Hinweise, Rückmeldungen etc.<br />
<br />
Frohe Weihnachten!<br />
<br />
Holger]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Probleme mit die Friendship von ava aus Fremds Grid]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=4945</link>
			<pubDate>Sun, 01 Dec 2024 20:33:43 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=1720">Antonio-Salamander</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=4945</guid>
			<description><![CDATA[Guten Abend zusammen,<br />
<br />
seit eine Woche habe ich mein Grid Standarlone mit der Hypergrid verbundet, es ist kein Home Server, hat eine feste ip adresse(noch kein Domain aber kommt noch) Tag zu Tag wird besser, aber habe ich ein Problem:<br />
<br />
Warum wenn mein avi Grid in anothers Grid ist :Osgrid, Dorenas World, Dereus, und jemand abiete mir Freundschaft oder ich, dann später wenn ich offline bin, und wieder Online, der Ava Freund Max Mustermann ist nicht mehr auf meine Freundschaftliste (aber bei ihn bin ich) und kann ich nicht mehr kontaktieren oder sehen?, nur wenn die Freundschaft anfrage von der Ava Max Mustermann aus Osgrid oder Dorenas oder andere Grid in mein Grid ist und ich bin Online mit ihn dann klappt es und bleibt gespeichert und kann ich normalweise sehen wenn er Online ist oder er mich und IM  schreiben...<br />
<br />
Soll noch etwas in Config-ini oder OpenSim.ini etwas aktiviert werden oder geändern?<br />
<br />
Vielen Dank<br />
<br />
Antonio Salamander<br />
<br />
Grid Adresse 92.204.41.235:9000:Welcome<br />
<br />
24 st Online]]></description>
			<content:encoded><![CDATA[Guten Abend zusammen,<br />
<br />
seit eine Woche habe ich mein Grid Standarlone mit der Hypergrid verbundet, es ist kein Home Server, hat eine feste ip adresse(noch kein Domain aber kommt noch) Tag zu Tag wird besser, aber habe ich ein Problem:<br />
<br />
Warum wenn mein avi Grid in anothers Grid ist :Osgrid, Dorenas World, Dereus, und jemand abiete mir Freundschaft oder ich, dann später wenn ich offline bin, und wieder Online, der Ava Freund Max Mustermann ist nicht mehr auf meine Freundschaftliste (aber bei ihn bin ich) und kann ich nicht mehr kontaktieren oder sehen?, nur wenn die Freundschaft anfrage von der Ava Max Mustermann aus Osgrid oder Dorenas oder andere Grid in mein Grid ist und ich bin Online mit ihn dann klappt es und bleibt gespeichert und kann ich normalweise sehen wenn er Online ist oder er mich und IM  schreiben...<br />
<br />
Soll noch etwas in Config-ini oder OpenSim.ini etwas aktiviert werden oder geändern?<br />
<br />
Vielen Dank<br />
<br />
Antonio Salamander<br />
<br />
Grid Adresse 92.204.41.235:9000:Welcome<br />
<br />
24 st Online]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Probleme in Grid mit OSSL]]></title>
			<link>https://www.gridtalk.de/showthread.php?tid=4940</link>
			<pubDate>Sun, 24 Nov 2024 22:54:53 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://www.gridtalk.de/member.php?action=profile&uid=1720">Antonio-Salamander</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.gridtalk.de/showthread.php?tid=4940</guid>
			<description><![CDATA[Guten Tag,<br />
habe ich seit ein paar Tage zur erste mal geschafft mein eigenes Grid (mit der Hypergrid verbunden) in ein vserver Ubuntu 22.04 in Standarlone  modus zu haben, der läuft gut und stabil.<br />
<br />
Heute als ich mit die Boot von Saty aus region OpenSimulator in Osgrid abgeholt hatte, als ich anfangen zu segeln wollte, bekomme ich diese Fehlermeldung, wenn ich der avatar auf der Boot leite.<br />
<br />
Warnung Errors Schrits<br />
<br />
[12:59] YEngine: OSSL Permission Error: osAvatarStopAnimation disabled in region configuration (script: ..SFposer event: changed primID: 6b4d76d6-71e3-4b62-8ccf-03f062db5529 at: &lt;430,252,19&gt;) Script must be Reset to re-enable.<br />
<br />
Früher mit mein Osgrid avi in mein eiegen Regions konnte ich problemlos segeln, wie jetzt auch in Dorenas World.<br />
<br />
Soll ich etwas in OpenSim.ini ändern eintragen oder so? oder in Config ?<br />
<br />
Auf Ihre große Hilfe bedanke ich mich von Herzen<br />
<br />
Viele Grüße<br />
<br />
Antonio Salamander]]></description>
			<content:encoded><![CDATA[Guten Tag,<br />
habe ich seit ein paar Tage zur erste mal geschafft mein eigenes Grid (mit der Hypergrid verbunden) in ein vserver Ubuntu 22.04 in Standarlone  modus zu haben, der läuft gut und stabil.<br />
<br />
Heute als ich mit die Boot von Saty aus region OpenSimulator in Osgrid abgeholt hatte, als ich anfangen zu segeln wollte, bekomme ich diese Fehlermeldung, wenn ich der avatar auf der Boot leite.<br />
<br />
Warnung Errors Schrits<br />
<br />
[12:59] YEngine: OSSL Permission Error: osAvatarStopAnimation disabled in region configuration (script: ..SFposer event: changed primID: 6b4d76d6-71e3-4b62-8ccf-03f062db5529 at: &lt;430,252,19&gt;) Script must be Reset to re-enable.<br />
<br />
Früher mit mein Osgrid avi in mein eiegen Regions konnte ich problemlos segeln, wie jetzt auch in Dorenas World.<br />
<br />
Soll ich etwas in OpenSim.ini ändern eintragen oder so? oder in Config ?<br />
<br />
Auf Ihre große Hilfe bedanke ich mich von Herzen<br />
<br />
Viele Grüße<br />
<br />
Antonio Salamander]]></content:encoded>
		</item>
	</channel>
</rss>