Polar55 är ett utvecklarvänligt webbhotell, och därför har du självklart också tillgång till terminalen, både via SSH och direkt i cPanel.
Att använda terminalen kan kännas lite skrämmande, och få vet hur de ska komma igång. Med AI har det dock blivit mycket enklare. Du kan kopiera kommandon från AI-verktyget till terminalen och sedan ge det resultatet. Därefter kan det föreslå ett nytt kommando beroende på vad du vill undersöka.
I den här guiden visar vi några exempel på vad du kan använda terminalen till. Det är dock viktigt att betona att det blir riktigt effektivt först när du låter en AI både skapa dina kommandon och analysera resultaten.
Undersök hög CPU-användning och möjlig bottrafik
Använder ditt webbhotell mycket CPU, eller är din webbplats långsam? Det kan bero på automatiserade botar eller många upprepade förfrågningar till din webbplats.
Med cPanel Terminal kan du undersöka trafiken till dina webbplatser. Du hittar Terminal under Advanced → Terminal i cPanel. Kommandona nedan är skrivskyddade och ändrar ingenting på ditt webbhotell.
Hitta de mest aktiva User-Agents
En User-Agent är den identifieringssträng som en webbläsare eller bot skickar med sin förfrågan. Följande kommando visar vilka User-Agents som har gjort flest förfrågningar med HTTP 200-svar under de senaste 60 minuterna:
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
Exempel på resultat:
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
Siffran till vänster visar antalet förfrågningar. Om en User-Agent sticker ut tydligt kan du undersöka vilka IP-adresser trafiken kommer från.
Observera: Många förfrågningar är inte nödvändigtvis misstänkta. Exempelvis kan WP Rocket generera många förfrågningar när cachen byggs upp. User-Agents kan dessutom förfalskas. Kommandot visar bara HTTP 200 och inte exempelvis HTTP 403 eller 429.
Hitta IP-adresserna bakom en viss User-Agent
Kopiera den User-Agent du vill undersöka och klistra in den mellan citattecknen efter UA=. Här använder vi Microsoft Edge som exempel:
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
Exempel på resultat:
865 192.0.2.10
591 198.51.100.20
1 203.0.113.30
Här kan du se att merparten av förfrågningarna kommer från två IP-adresser.
Blockera en IP-adress via cPanel
Om du har undersökt trafiken och bedömer att en IP-adress orsakar problem kan du blockera den via cPanel:
- Logga in på cPanel.
- Öppna Security → IP Blocker.
- Ange den IP-adress du vill blockera.
- Klicka på Add.
- Upprepa vid behov för fler IP-adresser.
Du kan senare ta bort blockeringen på samma ställe. Tänk på att en IP-adress även kan tillhöra en legitim besökare eller en delad internetanslutning.
Ta reda på vilken domän som får mest trafik
Om du har flera webbplatser på samma cPanel-konto kan du undersöka vilken domän som har fått flest förfrågningar under de senaste 60 minuterna. Det kan hjälpa dig att hitta den webbplats du bör undersöka närmare vid hög CPU-belastning.
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 = {}
# Hämta rätt domänmappning från cPanel
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
# Gå igenom åtkomstloggarna för de senaste 60 minuterna
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)
# Undvik att läsa samma fil via flera hårda länkar
if identity in seen:
continue
seen.add(identity)
name = os.path.basename(path)
name = re.sub(r'-ssl_log$', '', name)
# Visa rätt domännamn från cPanel
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('FÖRFRÅGNINGAR PER DOMÄN – SENASTE 60 MINUTERNA')
print()
for domain, count in counts.most_common():
print('{:8} {}'.format(count, domain))
PY
Exempel på resultat:
FÖRFRÅGNINGAR PER DOMÄN – SENASTE 60 MINUTERNA
4821 webbplats-a.se
936 webbplats-b.se
124 webbplats-c.se
I exemplet får webbplats-a.se betydligt mer trafik än de övriga webbplatserna.
Många förfrågningar innebär dock inte nödvändigtvis hög CPU-användning. En enda resurskrävande WordPress-förfrågan kan belasta servern mer än många cachade förfrågningar. Siffrorna är därför en fingervisning och inte en direkt mätning av CPU-användningen.
Undersök diskutrymmesanvändningen och hitta de största filerna
Håller diskutrymmet på ditt webbhotell på att ta slut? Med Terminal kan du hitta de största filerna på ditt konto. Det är särskilt användbart för att upptäcka gamla säkerhetskopior, stora loggfiler och andra filer som kanske inte längre behövs.
Hitta de 20 största filerna
find ~ -type f -printf '%s %p\n' 2>/dev/null \
| sort -nr | head -20 \
| awk '{printf "%.1f MB %s\n", $1/1048576, $2}'
Exempel på resultat:
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
Ha tålamod: Kommandot kan ta flera minuter att slutföra, särskilt om ditt konto innehåller många filer.
Kommandot är bra för att hitta möjligheter att frigöra utrymme på ditt webbhotell. Det raderar ingenting.
Viktigt: Radera aldrig filer om du inte vet vad de används till. Granska dem gärna i cPanels filhanterare innan du raderar något.