AnalisiServer: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 14: | Riga 14: | ||
SERVER_LIST="server.csv" | SERVER_LIST="server.csv" | ||
SSH_USER="root" | SSH_USER="root" | ||
SSH_KEY="$HOME/.ssh/id_rsa" | SSH_KEY="$HOME/.ssh/id_rsa" | ||
OUTPUT_DIR="output" | OUTPUT_DIR="output" | ||
mkdir -p "$OUTPUT_DIR" | LOG_FILE="${OUTPUT_DIR}/log.txt" | ||
while IFS=',' read -r name ip; do | mkdir -p "$OUTPUT_DIR" | ||
> "$LOG_FILE" | |||
exec 3< "$SERVER_LIST" | |||
while IFS=',' read -r name ip <&3; do | |||
name=$(echo "$name" | xargs) | |||
ip=$(echo "$ip" | xargs) | |||
if [[ -z "$name" || -z "$ip" || "$name" == "hostname" ]]; then | |||
continue | |||
fi | |||
echo "Controllo connessione a $name ($ip)..." | |||
ssh -i "$SSH_KEY" -o BatchMode=yes -o ConnectTimeout=5 -o StrictHostKeyChecking=no "$SSH_USER@$ip" 'exit' 2>/dev/null | |||
if [ $? -ne 0 ]; then | |||
echo "❌ Connessione fallita a $ip ($name), salto." | echo "❌ Connessione fallita a $ip ($name), salto." | ||
echo "$name,$ip,FAILED" >> "$LOG_FILE" | |||
continue | continue | ||
fi | |||
echo "✅ Connessione riuscita a $ip ($name). Raccolgo informazioni..." | |||
echo "$name,$ip,SUCCESS" >> "$LOG_FILE" | |||
OUTPUT_FILE="${OUTPUT_DIR}/${name}.txt" | |||
echo "=== Informazioni per $name ($ip) ===" > "$OUTPUT_FILE" | |||
echo | ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no "$SSH_USER@$ip" bash << 'EOF' | sed '/^$/d' >> "$OUTPUT_FILE" | ||
echo "--- CPU Info ---" | |||
lscpu | grep 'Model name' | lscpu | grep 'Model name' | ||
echo | echo "--- RAM Totale ---" | ||
free -h | grep Mem | free -h | grep Mem | ||
echo | echo "--- SWAP ---" | ||
free -h | grep Swap | free -h | grep Swap | ||
echo | echo "--- Sistema Operativo ---" | ||
cat /etc/os-release | grep PRETTY_NAME | cat /etc/os-release | grep PRETTY_NAME | ||
echo | echo "--- Ultima Patch Installata ---" | ||
if command -v rpm &>/dev/null; then | if command -v rpm &>/dev/null; then | ||
rpm -qa --last | head -n 1 | rpm -qa --last | head -n 1 | ||
| Riga 50: | Riga 54: | ||
echo "Gestore pacchetti non riconosciuto" | echo "Gestore pacchetti non riconosciuto" | ||
fi | fi | ||
echo | echo "--- Ultimo Riavvio ---" | ||
who -b | who -b | ||
echo | echo "--- Elenco Dischi ---" | ||
lsblk | lsblk | ||
echo | echo "--- Top 5 Processi per Uso CPU ---" | ||
ps -eo pid,comm,%cpu --sort=-%cpu | head -n 6 | ps -eo pid,comm,%cpu --sort=-%cpu | head -n 6 | ||
echo | echo "--- Top 5 Processi per Uso RAM ---" | ||
ps -eo pid,comm,%mem --sort=-%mem | head -n 6 | ps -eo pid,comm,%mem --sort=-%mem | head -n 6 | ||
EOF | EOF | ||
echo "📄 File ${OUTPUT_FILE} creato." | echo "📄 File ${OUTPUT_FILE} creato." | ||
done < "$ | done | ||
exec 3<&- | |||
echo "📝 Log completo: $LOG_FILE" | |||
Versione delle 08:47, 30 apr 2025
Generare un file server.csv:
hostname,ip postgreslab01,192.168.1.220
Verrà usato l'ip per la connessione e il nome per il file di output nella sotto directory: output
Creare un file con lo script del collegamento ai server mediante certificati e rileva le informazioni:
vi check_server_info.sh
#!/bin/bash
SERVER_LIST="server.csv"
SSH_USER="root"
SSH_KEY="$HOME/.ssh/id_rsa"
OUTPUT_DIR="output"
LOG_FILE="${OUTPUT_DIR}/log.txt"
mkdir -p "$OUTPUT_DIR"
> "$LOG_FILE"
exec 3< "$SERVER_LIST"
while IFS=',' read -r name ip <&3; do
name=$(echo "$name" | xargs)
ip=$(echo "$ip" | xargs)
if | -z "$ip" || "$name" == "hostname" ; then
continue
fi
echo "Controllo connessione a $name ($ip)..."
ssh -i "$SSH_KEY" -o BatchMode=yes -o ConnectTimeout=5 -o StrictHostKeyChecking=no "$SSH_USER@$ip" 'exit' 2>/dev/null
if [ $? -ne 0 ]; then
echo "❌ Connessione fallita a $ip ($name), salto."
echo "$name,$ip,FAILED" >> "$LOG_FILE"
continue
fi
echo "✅ Connessione riuscita a $ip ($name). Raccolgo informazioni..."
echo "$name,$ip,SUCCESS" >> "$LOG_FILE"
OUTPUT_FILE="${OUTPUT_DIR}/${name}.txt"
echo "=== Informazioni per $name ($ip) ===" > "$OUTPUT_FILE"
ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no "$SSH_USER@$ip" bash << 'EOF' | sed '/^$/d' >> "$OUTPUT_FILE"
echo "--- CPU Info ---"
lscpu | grep 'Model name'
echo "--- RAM Totale ---"
free -h | grep Mem
echo "--- SWAP ---"
free -h | grep Swap
echo "--- Sistema Operativo ---"
cat /etc/os-release | grep PRETTY_NAME
echo "--- Ultima Patch Installata ---"
if command -v rpm &>/dev/null; then
rpm -qa --last | head -n 1
elif command -v dpkg &>/dev/null; then
ls -lt /var/lib/dpkg/info/ | head -n 1
else
echo "Gestore pacchetti non riconosciuto"
fi
echo "--- Ultimo Riavvio ---"
who -b
echo "--- Elenco Dischi ---"
lsblk
echo "--- Top 5 Processi per Uso CPU ---"
ps -eo pid,comm,%cpu --sort=-%cpu | head -n 6
echo "--- Top 5 Processi per Uso RAM ---"
ps -eo pid,comm,%mem --sort=-%mem | head -n 6
EOF
echo "📄 File ${OUTPUT_FILE} creato."
done
exec 3<&-
echo "📝 Log completo: $LOG_FILE"