Polar55 je webhosting priateľský k vývojárom, a preto máte samozrejme prístup aj k terminálu, a to cez SSH aj priamo cez cPanel.
Používanie terminálu môže pôsobiť trochu odstrašujúco a málokto vie, ako začať. S umelou inteligenciou je to však oveľa jednoduchšie. Stačí skopírovať príkazy, ktoré vám poskytne, do terminálu a potom jej poslať výsledok. Následne vám môže navrhnúť ďalší príkaz podľa toho, čo chcete preskúmať.
V tomto návode vám ukážeme niekoľko príkladov využitia terminálu. Je však dôležité zdôrazniť, že skutočne efektívne to bude vtedy, keď necháte umelú inteligenciu vytvárať príkazy aj analyzovať ich výsledky.
Preskúmajte vysoké využitie CPU a možnú návštevnosť od botov
Využíva váš webhosting veľa CPU alebo je váš web pomalý? Príčinou môžu byť automatizované boty alebo množstvo opakovaných požiadaviek na váš web.
Pomocou terminálu v cPaneli môžete preskúmať návštevnosť svojich webov. Terminál nájdete v cPaneli v časti Advanced → Terminal. Nasledujúce príkazy údaje iba čítajú a na vašom hostingovom účte nič nemenia.
Nájdite najaktívnejšie identifikátory User-Agent
User-Agent je identifikačný reťazec, ktorý prehliadač alebo bot odosiela spolu s požiadavkou. Nasledujúci príkaz ukáže, ktoré identifikátory User-Agent vykonali za posledných 60 minút najviac požiadaviek s odpoveďou HTTP 200:
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
Príklad výsledku:
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
Číslo vľavo udáva počet požiadaviek. Ak niektorý identifikátor User-Agent výrazne vyčnieva, môžete preskúmať, z ktorých IP adries návštevnosť pochádza.
Poznámka: Veľa požiadaviek nemusí byť nevyhnutne podozrivých. Napríklad WP Rocket môže pri vytváraní vyrovnávacej pamäte generovať veľa požiadaviek. Identifikátory User-Agent sa navyše dajú sfalšovať. Príkaz zobrazuje iba odpovede HTTP 200, nie napríklad HTTP 403 alebo 429.
Nájdite IP adresy konkrétneho identifikátora User-Agent
Skopírujte identifikátor User-Agent, ktorý chcete preskúmať, a vložte ho medzi úvodzovky za UA=. V tomto príklade používame Microsoft Edge:
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
Príklad výsledku:
865 192.0.2.10
591 198.51.100.20
1 203.0.113.30
Tu vidíte, že väčšina požiadaviek pochádza z dvoch IP adries.
Zablokujte IP adresu cez cPanel
Ak ste preskúmali návštevnosť a usúdili ste, že niektorá IP adresa spôsobuje problémy, môžete ju zablokovať cez cPanel:
- Prihláste sa do cPanelu.
- Otvorte Security → IP Blocker.
- Zadajte IP adresu, ktorú chcete zablokovať.
- Kliknite na Add.
- V prípade potreby postup zopakujte pre ďalšie IP adresy.
Blokovanie môžete neskôr zrušiť na rovnakom mieste. Pamätajte, že IP adresa môže patriť aj legitímnemu návštevníkovi alebo zdieľanému internetovému pripojeniu.
Zistite, ktorá doména má najväčšiu návštevnosť
Ak máte na rovnakom účte cPanel viacero webov, môžete zistiť, ktorá doména dostala za posledných 60 minút najviac požiadaviek. To vám pri vysokom zaťažení CPU pomôže určiť web, ktorý treba preskúmať podrobnejšie.
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 = {}
# Získanie správneho mapovania domén z cPanelu
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
# Prehľadanie prístupových protokolov za posledných 60 minút
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)
# Zabránenie opakovanému čítaniu súboru cez viacero pevných odkazov
if identity in seen:
continue
seen.add(identity)
name = os.path.basename(path)
name = re.sub(r'-ssl_log$', '', name)
# Zobrazenie správneho názvu domény z cPanelu
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('POŽIADAVKY PODĽA DOMÉNY – POSLEDNÝCH 60 MINÚT')
print()
for domain, count in counts.most_common():
print('{:8} {}'.format(count, domain))
PY
Príklad výsledku:
POŽIADAVKY PODĽA DOMÉNY – POSLEDNÝCH 60 MINÚT
4821 web-a.sk
936 web-b.sk
124 web-c.sk
V tomto príklade má web-a.sk výrazne väčšiu návštevnosť než ostatné weby.
Veľa požiadaviek však nemusí znamenať vysoké využitie CPU. Jedna náročná požiadavka vo WordPresse môže server zaťažiť viac než množstvo požiadaviek obslúžených z vyrovnávacej pamäte. Tieto čísla sú preto orientačné a nejde o priame meranie využitia CPU.
Preskúmajte využitie diskového priestoru a nájdite najväčšie súbory
Dochádza vám na webhostingu miesto na disku? Pomocou terminálu môžete nájsť najväčšie súbory vo svojom účte. Je to užitočné najmä pri hľadaní starých záloh, veľkých protokolových súborov a ďalších súborov, ktoré už možno nepotrebujete.
Nájdite 20 najväčších súborov
find ~ -type f -printf '%s %p\n' 2>/dev/null \
| sort -nr | head -20 \
| awk '{printf "%.1f MB %s\n", $1/1048576, $2}'
Príklad výsledku:
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
Buďte trpezliví: Dokončenie príkazu môže trvať niekoľko minút, najmä ak váš účet obsahuje veľa súborov.
Tento príkaz je užitočný pri hľadaní možností, ako uvoľniť miesto na webhostingu. Nič neodstraňuje.
Dôležité: Nikdy neodstraňujte súbory, ak neviete, na čo slúžia. Pred odstránením si ich prípadne prezrite v správcovi súborov cPanelu.