Polar55 bietet entwicklerfreundliches Webhosting. Deshalb haben Sie selbstverständlich auch Zugriff auf das Terminal, sowohl über SSH als auch direkt über Ihr cPanel.
Die Nutzung des Terminals kann etwas einschüchternd wirken, und die wenigsten wissen, wie sie anfangen sollen. Mit KI ist es jedoch deutlich einfacher geworden: Sie können die von der KI bereitgestellten Befehle in das Terminal kopieren und ihr anschließend die Ausgabe übermitteln. Danach kann sie Ihnen je nach Fragestellung einen weiteren Befehl vorschlagen.
In dieser Anleitung zeigen wir Ihnen einige Beispiele dafür, wofür Sie das Terminal nutzen können. Es ist jedoch wichtig zu betonen, dass dies erst dann wirklich effizient wird, wenn Sie eine KI sowohl die Befehle erstellen als auch deren Ausgaben analysieren lassen.
Hohe CPU-Auslastung und möglichen Bot-Traffic untersuchen
Verbraucht Ihr Webhosting-Konto viele CPU-Ressourcen oder ist Ihre Website langsam? Das kann an automatisierten Bots oder vielen wiederholten Anfragen an Ihre Website liegen.
Mit dem cPanel-Terminal können Sie den Traffic Ihrer Websites untersuchen. Sie finden das Terminal in cPanel unter Advanced → Terminal. Die folgenden Befehle lesen ausschließlich Daten und verändern nichts an Ihrem Webhosting-Konto.
Die aktivsten User-Agents finden
Ein User-Agent ist die Kennung, die ein Browser oder Bot mit seiner Anfrage übermittelt. Der folgende Befehl zeigt, welche User-Agents in den letzten 60 Minuten die meisten Anfragen mit einer HTTP-200-Antwort gestellt haben:
grep -hE "$(for i in $(seq 0 59); do LC_ALL=C date -d "$i minutes ago" '+%d/%b/%Y:%H:%M'; done | paste -sd'|' -)" \
~/access-logs/* 2>/dev/null \
| awk -F'"' '$3 ~ /^ 200 / {
ua=$6;
if (ua=="") ua="-";
print ua
}' \
| sort | uniq -c | sort -nr | head -100
Beispielausgabe:
1662 Mozilla/5.0 ... Edg/156.0.0.0
810 Mozilla/5.0 ... Chrome/156.0.0.0 Mobile
479 WP Rocket/Preload
96 Mozilla/5.0 ... bingbot/2.0
Die Zahl links gibt die Anzahl der Anfragen an. Wenn ein User-Agent deutlich hervorsticht, können Sie untersuchen, von welchen IP-Adressen der Traffic stammt.
Hinweis: Viele Anfragen sind nicht unbedingt verdächtig. Beispielsweise kann WP Rocket beim Aufbau des Caches viele Anfragen erzeugen. User-Agents können außerdem gefälscht werden. Der Befehl zeigt nur HTTP 200 an, nicht jedoch beispielsweise HTTP 403 oder 429.
Die IP-Adressen hinter einem bestimmten User-Agent finden
Kopieren Sie den User-Agent, den Sie untersuchen möchten, und fügen Sie ihn zwischen den Anführungszeichen nach UA= ein. Hier verwenden wir Microsoft Edge als Beispiel:
UA='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36 Edg/156.0.0.0'
grep -hE "$(for i in $(seq 0 59); do LC_ALL=C date -d "$i minutes ago" '+%d/%b/%Y:%H:%M'; done | paste -sd'|' -)" \
~/access-logs/* 2>/dev/null \
| awk -F'"' -v ua="$UA" '
$3 ~ /^ 200 / && $6 == ua {
split($1,a," ")
print a[1]
}
' \
| sort | uniq -c | sort -nr | head -20
Beispielausgabe:
865 192.0.2.10
591 198.51.100.20
1 203.0.113.30
Hier sehen Sie, dass der Großteil der Anfragen von zwei IP-Adressen stammt.
Eine IP-Adresse über cPanel sperren
Wenn Sie den Traffic untersucht haben und zu dem Schluss kommen, dass eine IP-Adresse Probleme verursacht, können Sie diese über cPanel sperren:
- Melden Sie sich bei cPanel an.
- Öffnen Sie Security → IP Blocker.
- Geben Sie die IP-Adresse ein, die Sie sperren möchten.
- Klicken Sie auf Add.
- Wiederholen Sie den Vorgang bei Bedarf für weitere IP-Adressen.
Sie können die Sperre später an derselben Stelle aufheben. Beachten Sie, dass eine IP-Adresse auch zu einem legitimen Besucher oder einem gemeinsam genutzten Internetanschluss gehören kann.
Herausfinden, welche Domain den meisten Traffic erhält
Wenn Sie mehrere Websites auf demselben cPanel-Konto betreiben, können Sie untersuchen, welche Domain in den letzten 60 Minuten die meisten Anfragen erhalten hat. Das kann Ihnen bei hoher CPU-Auslastung helfen, die Website zu finden, die Sie genauer untersuchen sollten.
python3 - <<'PY'
import glob
import json
import os
import re
import subprocess
from collections import Counter
from datetime import datetime, timedelta
now = datetime.now().astimezone()
start = now - timedelta(minutes=60)
counts = Counter()
domains = {}
# Die korrekte Domainzuordnung aus cPanel abrufen
try:
result = subprocess.run(
['uapi', '--output=json', 'DomainInfo', 'domains_data'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True,
timeout=15
)
if result.returncode == 0:
response = json.loads(result.stdout)
data = response.get('result', {}).get('data') or {}
for category in ('addon_domains', 'sub_domains'):
for item in data.get(category) or []:
if not isinstance(item, dict):
continue
internal = item.get('servername')
public = item.get('domain')
if internal and public:
domains[internal] = public
main = data.get('main_domain') or {}
if isinstance(main, dict):
internal = main.get('servername')
public = main.get('domain')
if internal and public:
domains[internal] = public
except (OSError, ValueError, subprocess.TimeoutExpired):
pass
# Zugriffsprotokolle für die letzten 60 Minuten durchsuchen
seen = set()
for path in glob.glob(os.path.expanduser('~/access-logs/*')):
try:
if not os.path.isfile(path):
continue
stat = os.stat(path)
identity = (stat.st_dev, stat.st_ino)
# Dieselbe Datei nicht mehrfach über verschiedene Hardlinks lesen
if identity in seen:
continue
seen.add(identity)
name = os.path.basename(path)
name = re.sub(r'-ssl_log$', '', name)
# Den richtigen Domainnamen aus cPanel anzeigen
domain = domains.get(name, name)
with open(path, errors='replace') as logfile:
for line in logfile:
match = re.search(r'\[([^\]]+)\]', line)
if not match:
continue
try:
timestamp = datetime.strptime(
match.group(1),
'%d/%b/%Y:%H:%M:%S %z'
)
except ValueError:
continue
if start <= timestamp <= now:
counts[domain] += 1
except OSError:
continue
print('ANFRAGEN PRO DOMAIN – LETZTE 60 MINUTEN')
print()
for domain, count in counts.most_common():
print('{:8} {}'.format(count, domain))
PY
Beispielausgabe:
ANFRAGEN PRO DOMAIN – LETZTE 60 MINUTEN
4821 website-a.de
936 website-b.de
124 website-c.de
In diesem Beispiel erhält website-a.de deutlich mehr Traffic als die anderen Websites.
Viele Anfragen bedeuten jedoch nicht zwangsläufig eine hohe CPU-Auslastung. Eine einzige ressourcenintensive WordPress-Anfrage kann den Server stärker belasten als viele Anfragen, die aus dem Cache bedient werden. Die Zahlen dienen daher als Anhaltspunkt und sind keine direkte Messung der CPU-Auslastung.
Speicherplatzverbrauch untersuchen und die größten Dateien finden
Wird der Speicherplatz auf Ihrem Webhosting-Konto knapp? Mit dem Terminal können Sie die größten Dateien auf Ihrem Konto finden. Das ist besonders hilfreich, um alte Backups, große Protokolldateien und andere Dateien aufzuspüren, die möglicherweise nicht mehr benötigt werden.
Die 20 größten Dateien finden
find ~ -type f -printf '%s %p\n' 2>/dev/null \
| sort -nr | head -20 \
| awk '{printf "%.1f MB %s\n", $1/1048576, $2}'
Beispielausgabe:
1850.4 MB /home/user/backups/backup-old.zip
724.2 MB /home/user/public_html/wp-content/backup.zip
312.8 MB /home/user/public_html/error_log
Haben Sie Geduld: Die Ausführung des Befehls kann mehrere Minuten dauern, insbesondere wenn Ihr Konto viele Dateien enthält.
Der Befehl hilft Ihnen, Möglichkeiten zum Freigeben von Speicherplatz auf Ihrem Webhosting-Konto zu finden. Er löscht nichts.
Wichtig: Löschen Sie niemals Dateien, wenn Sie nicht wissen, wofür sie verwendet werden. Prüfen Sie diese gegebenenfalls zuerst im Dateimanager von cPanel, bevor Sie etwas löschen.