Η Polar55 προσφέρει φιλοξενία ιστοσελίδων φιλική προς τους προγραμματιστές, επομένως έχετε φυσικά πρόσβαση και στο τερματικό, τόσο μέσω SSH όσο και απευθείας από το cPanel.
Η χρήση του τερματικού μπορεί να φαίνεται λίγο τρομακτική και λίγοι γνωρίζουν από πού να ξεκινήσουν. Ωστόσο, με την τεχνητή νοημοσύνη έχει γίνει πολύ πιο εύκολη. Μπορείτε απλώς να αντιγράψετε τις εντολές που σας δίνει στο τερματικό και στη συνέχεια να της στείλετε το αποτέλεσμα. Έπειτα, μπορεί να σας προτείνει μια νέα εντολή ανάλογα με το τι θέλετε να εξετάσετε.
Σε αυτόν τον οδηγό θα σας δείξουμε μερικά παραδείγματα χρήσης του τερματικού. Είναι όμως σημαντικό να τονίσουμε ότι η διαδικασία γίνεται πραγματικά αποτελεσματική όταν χρησιμοποιείτε την τεχνητή νοημοσύνη τόσο για τη δημιουργία των εντολών όσο και για την ανάλυση των αποτελεσμάτων τους.
Εξετάστε την υψηλή χρήση CPU και πιθανή κίνηση από bots
Ο λογαριασμός φιλοξενίας σας χρησιμοποιεί πολλούς πόρους CPU ή η ιστοσελίδα σας είναι αργή; Αυτό μπορεί να οφείλεται σε αυτοματοποιημένα bots ή σε πολλά επαναλαμβανόμενα αιτήματα προς την ιστοσελίδα σας.
Με το τερματικό του cPanel μπορείτε να εξετάσετε την κίνηση στις ιστοσελίδες σας. Θα βρείτε το Terminal στην ενότητα Advanced → Terminal του cPanel. Οι παρακάτω εντολές διαβάζουν μόνο δεδομένα και δεν αλλάζουν τίποτα στον λογαριασμό φιλοξενίας σας.
Βρείτε τα πιο ενεργά User-Agents
Το User-Agent είναι η συμβολοσειρά αναγνώρισης που στέλνει ένα πρόγραμμα περιήγησης ή ένα bot μαζί με το αίτημά του. Η παρακάτω εντολή δείχνει ποια User-Agents έχουν κάνει τα περισσότερα αιτήματα που έλαβαν απάντηση HTTP 200 τα τελευταία 60 λεπτά:
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
Παράδειγμα αποτελέσματος:
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
Ο αριθμός στα αριστερά δείχνει το πλήθος των αιτημάτων. Αν κάποιο User-Agent ξεχωρίζει αισθητά, μπορείτε να εξετάσετε από ποιες διευθύνσεις IP προέρχεται η κίνηση.
Σημείωση: Τα πολλά αιτήματα δεν είναι απαραίτητα ύποπτα. Για παράδειγμα, το WP Rocket μπορεί να δημιουργεί πολλά αιτήματα κατά τη δημιουργία της προσωρινής μνήμης. Επίσης, τα User-Agents μπορούν να πλαστογραφηθούν. Η εντολή εμφανίζει μόνο απαντήσεις HTTP 200 και όχι, για παράδειγμα, HTTP 403 ή 429.
Βρείτε τις διευθύνσεις IP πίσω από ένα συγκεκριμένο User-Agent
Αντιγράψτε το User-Agent που θέλετε να εξετάσετε και επικολλήστε το ανάμεσα στα εισαγωγικά μετά το UA=. Εδώ χρησιμοποιούμε το 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
Παράδειγμα αποτελέσματος:
865 192.0.2.10
591 198.51.100.20
1 203.0.113.30
Εδώ βλέπετε ότι τα περισσότερα αιτήματα προέρχονται από δύο διευθύνσεις IP.
Αποκλείστε μια διεύθυνση IP μέσω του cPanel
Αν έχετε εξετάσει την κίνηση και κρίνετε ότι μια διεύθυνση IP προκαλεί προβλήματα, μπορείτε να την αποκλείσετε μέσω του cPanel:
- Συνδεθείτε στο cPanel.
- Ανοίξτε το Security → IP Blocker.
- Εισαγάγετε τη διεύθυνση IP που θέλετε να αποκλείσετε.
- Κάντε κλικ στο Add.
- Επαναλάβετε για περισσότερες διευθύνσεις IP, αν χρειάζεται.
Μπορείτε αργότερα να άρετε τον αποκλεισμό από το ίδιο σημείο. Λάβετε υπόψη ότι μια διεύθυνση IP μπορεί επίσης να ανήκει σε έναν κανονικό επισκέπτη ή σε μια κοινόχρηστη σύνδεση στο διαδίκτυο.
Μάθετε ποιο domain δέχεται τη μεγαλύτερη κίνηση
Αν έχετε πολλές ιστοσελίδες στον ίδιο λογαριασμό cPanel, μπορείτε να εξετάσετε ποιο domain έχει δεχτεί τα περισσότερα αιτήματα τα τελευταία 60 λεπτά. Αυτό μπορεί να σας βοηθήσει να εντοπίσετε την ιστοσελίδα που πρέπει να εξετάσετε πιο προσεκτικά όταν η χρήση CPU είναι υψηλή.
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 = {}
# Ανάκτηση της σωστής αντιστοίχισης domain από το 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
# Έλεγχος των αρχείων καταγραφής πρόσβασης για τα τελευταία 60 λεπτά
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)
# Αποφυγή ανάγνωσης του ίδιου αρχείου μέσω πολλών σκληρών συνδέσμων
if identity in seen:
continue
seen.add(identity)
name = os.path.basename(path)
name = re.sub(r'-ssl_log$', '', name)
# Εμφάνιση του σωστού ονόματος domain από το 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('ΑΙΤΗΜΑΤΑ ΑΝΑ DOMAIN – ΤΕΛΕΥΤΑΙΑ 60 ΛΕΠΤΑ')
print()
for domain, count in counts.most_common():
print('{:8} {}'.format(count, domain))
PY
Παράδειγμα αποτελέσματος:
ΑΙΤΗΜΑΤΑ ΑΝΑ DOMAIN – ΤΕΛΕΥΤΑΙΑ 60 ΛΕΠΤΑ
4821 istoselida-a.gr
936 istoselida-b.gr
124 istoselida-c.gr
Σε αυτό το παράδειγμα, το istoselida-a.gr δέχεται πολύ περισσότερη κίνηση από τις υπόλοιπες ιστοσελίδες.
Ωστόσο, τα πολλά αιτήματα δεν σημαίνουν απαραίτητα υψηλή χρήση CPU. Ένα μόνο απαιτητικό αίτημα WordPress μπορεί να επιβαρύνει τον διακομιστή περισσότερο από πολλά αιτήματα που εξυπηρετούνται από την προσωρινή μνήμη. Οι αριθμοί αυτοί αποτελούν επομένως μια ένδειξη και όχι άμεση μέτρηση της χρήσης CPU.
Ελέγξτε τη χρήση χώρου στον δίσκο και βρείτε τα μεγαλύτερα αρχεία
Τελειώνει ο χώρος στον δίσκο του λογαριασμού φιλοξενίας σας; Με το Terminal μπορείτε να βρείτε τα μεγαλύτερα αρχεία στον λογαριασμό σας. Αυτό είναι ιδιαίτερα χρήσιμο για τον εντοπισμό παλιών αντιγράφων ασφαλείας, μεγάλων αρχείων καταγραφής και άλλων αρχείων που ενδέχεται να μη χρειάζονται πλέον.
Βρείτε τα 20 μεγαλύτερα αρχεία
find ~ -type f -printf '%s %p\n' 2>/dev/null \
| sort -nr | head -20 \
| awk '{printf "%.1f MB %s\n", $1/1048576, $2}'
Παράδειγμα αποτελέσματος:
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
Κάντε υπομονή: Η εντολή μπορεί να χρειαστεί αρκετά λεπτά για να ολοκληρωθεί, ειδικά αν ο λογαριασμός σας περιέχει πολλά αρχεία.
Η εντολή είναι χρήσιμη για να εντοπίσετε τρόπους να ελευθερώσετε χώρο στον λογαριασμό φιλοξενίας σας. Δεν διαγράφει τίποτα.
Σημαντικό: Μη διαγράφετε ποτέ αρχεία αν δεν γνωρίζετε σε τι χρησιμεύουν. Μπορείτε να τα εξετάσετε πρώτα στη Διαχείριση αρχείων του cPanel πριν διαγράψετε οτιδήποτε.