Polar55 er et utviklervennlig webhotell, og derfor har du selvfølgelig også tilgang til terminalen, både via SSH og direkte i cPanel.
Det å bruke terminalen kan virke litt skremmende, og de færreste vet hvordan de skal komme i gang. Med KI har det imidlertid blitt langt enklere. Du kan kopiere kommandoene den gir deg, inn i terminalen og deretter gi den resultatet. Så kan den foreslå en ny kommando ut fra hva du ønsker å undersøke.
I denne veiledningen viser vi noen eksempler på hva du kan bruke terminalen til. Det er likevel viktig å understreke at det først blir virkelig effektivt når du får en KI til både å lage kommandoene og analysere resultatene.
Undersøk høy CPU-bruk og mulig bottrafikk
Bruker webhotellet ditt mye CPU, eller er nettsiden din treg? Det kan skyldes automatiserte boter eller mange gjentatte forespørsler til nettsiden din.
Med cPanel Terminal kan du undersøke trafikken til nettsidene dine. Du finner Terminal under Advanced → Terminal i cPanel. Kommandoene nedenfor leser bare data og endrer ingenting på webhotellet ditt.
Finn de mest aktive User-Agent-strengene
En User-Agent er identifikasjonsstrengen som en nettleser eller bot sender med forespørselen sin. Følgende kommando viser hvilke User-Agent-strenger som har gjort flest forespørsler med HTTP 200-svar de siste 60 minuttene:
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
Eksempel 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
Tallet til venstre viser antall forespørsler. Hvis én User-Agent skiller seg tydelig ut, kan du undersøke hvilke IP-adresser trafikken kommer fra.
Merk: Mange forespørsler er ikke nødvendigvis mistenkelige. For eksempel kan WP Rocket generere mange forespørsler når hurtigbufferen bygges opp. User-Agent-strenger kan dessuten forfalskes. Kommandoen viser bare HTTP 200, og ikke for eksempel HTTP 403 eller 429.
Finn IP-adressene bak en bestemt User-Agent
Kopier User-Agent-strengen du vil undersøke, og lim den inn mellom anførselstegnene etter UA=. Her bruker vi Microsoft Edge som eksempel:
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
Eksempel på resultat:
865 192.0.2.10
591 198.51.100.20
1 203.0.113.30
Her ser du at de fleste forespørslene kommer fra to IP-adresser.
Blokker en IP-adresse via cPanel
Hvis du har undersøkt trafikken og vurderer at en IP-adresse skaper problemer, kan du blokkere den via cPanel:
- Logg inn på cPanel.
- Åpne Security → IP Blocker.
- Skriv inn IP-adressen du ønsker å blokkere.
- Klikk på Add.
- Gjenta eventuelt for flere IP-adresser.
Du kan senere oppheve blokkeringen på samme sted. Vær oppmerksom på at en IP-adresse også kan tilhøre en legitim besøkende eller en delt internettforbindelse.
Finn ut hvilket domene som mottar mest trafikk
Har du flere nettsider på samme cPanel-konto, kan du undersøke hvilket domene som har mottatt flest forespørsler de siste 60 minuttene. Det kan hjelpe deg med å finne nettsiden du bør undersøke nærmere ved høy 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 = {}
# Hent riktig domenekobling fra 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å gjennom tilgangsloggene for de siste 60 minuttene
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)
# Unngå å lese samme fil via flere harde lenker
if identity in seen:
continue
seen.add(identity)
name = os.path.basename(path)
name = re.sub(r'-ssl_log$', '', name)
# Vis riktig domenenavn fra 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('FORESPØRSLER PER DOMENE – SISTE 60 MINUTTER')
print()
for domain, count in counts.most_common():
print('{:8} {}'.format(count, domain))
PY
Eksempel på resultat:
FORESPØRSLER PER DOMENE – SISTE 60 MINUTTER
4821 nettside-a.no
936 nettside-b.no
124 nettside-c.no
I eksemplet mottar nettside-a.no langt mer trafikk enn de øvrige nettsidene.
Mange forespørsler betyr likevel ikke nødvendigvis høy CPU-bruk. Én ressurskrevende WordPress-forespørsel kan belaste serveren mer enn mange forespørsler som håndteres fra hurtigbufferen. Tallene er derfor en pekepinn og ikke en direkte måling av CPU-bruk.
Undersøk diskbruk og finn de største filene
Er webhotellet ditt i ferd med å gå tomt for diskplass? Med Terminal kan du finne de største filene på kontoen din. Det er spesielt nyttig for å oppdage gamle sikkerhetskopier, store loggfiler og andre filer som kanskje ikke lenger er nødvendige.
Finn de 20 største filene
find ~ -type f -printf '%s %p\n' 2>/dev/null \
| sort -nr | head -20 \
| awk '{printf "%.1f MB %s\n", $1/1048576, $2}'
Eksempel 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
Vær tålmodig: Kommandoen kan bruke flere minutter på å bli ferdig, særlig hvis kontoen din inneholder mange filer.
Kommandoen er nyttig for å finne muligheter til å frigjøre plass på webhotellet. Den sletter ingenting.
Viktig: Slett aldri filer hvis du ikke vet hva de brukes til. Se eventuelt gjennom dem i filbehandleren i cPanel før du sletter noe.