Icono del sitio Binario 0

Automatización de la configuración de servidores de hora en Linux, Debian/Ubuntu y CentOS/RHEL

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

La correcta sincronización del tiempo en los sistemas Linux es esencial para el funcionamiento de servicios críticos como autenticación, registros de auditoría, sistemas distribuidos o tareas programadas. Este artículo presenta dos scripts de configuración automatizada que detectan e instalan el servicio de sincronización de tiempo más adecuado (Chrony o NTP), lo configuran con un servidor de tiempo genérico público (pool.ntp.org) y aseguran su correcta activación y verificación.

Objetivo

Script para Debian/Ubuntu

#!/bin/bash

NTP_SERVER="pool.ntp.org"
CHRONY_CONF="/etc/chrony/chrony.conf"
NTP_CONF="/etc/ntp.conf"

check_installed() {
dpkg -l | grep -qw "$1"
}

configure_chrony() {
echo "Configurando Chrony..."
sed -i 's/^pool/#pool/g' $CHRONY_CONF 2>/dev/null
sed -i 's/^server/#server/g' $CHRONY_CONF 2>/dev/null
echo "server $NTP_SERVER iburst" >> $CHRONY_CONF
systemctl enable chrony
systemctl restart chrony
}

configure_ntp() {
echo "Configurando NTP..."
sed -i 's/^server/#server/g' $NTP_CONF 2>/dev/null
echo "server $NTP_SERVER iburst" >> $NTP_CONF
cat <<EOF >> $NTP_CONF

restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
EOF
systemctl enable ntp
systemctl restart ntp
}

echo "Comprobando si chrony o ntp están instalados..."

if check_installed chrony; then
echo "Chrony está instalado."
configure_chrony
elif check_installed ntp; then
echo "NTP está instalado."
configure_ntp
else
echo "No hay ninguno. Instalando Chrony..."
apt update && apt install -y chrony
configure_chrony
fi

# Verificación
echo "Verificando sincronización..."
timedatectl status
chronyc tracking 2>/dev/null || ntpq -p

Script para CentOS/RHEL

#!/bin/bash

NTP_SERVER="pool.ntp.org"
CHRONY_CONF="/etc/chrony.conf"
NTP_CONF="/etc/ntp.conf"

check_installed() {
rpm -q "$1" &>/dev/null
}

configure_chrony() {
echo "Configurando Chrony..."
sed -i 's/^pool/#pool/g' $CHRONY_CONF 2>/dev/null
sed -i 's/^server/#server/g' $CHRONY_CONF 2>/dev/null
echo "server $NTP_SERVER iburst" >> $CHRONY_CONF
systemctl enable chronyd
systemctl restart chronyd
}

configure_ntp() {
echo "Configurando NTP..."
sed -i 's/^server/#server/g' $NTP_CONF 2>/dev/null
echo "server $NTP_SERVER iburst" >> $NTP_CONF
cat <<EOF >> $NTP_CONF

restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
EOF
systemctl enable ntpd
systemctl restart ntpd
}

echo "Comprobando si chrony o ntp están instalados..."

if check_installed chrony; then
echo "Chrony está instalado."
configure_chrony
elif check_installed ntp; then
echo "NTP está instalado."
configure_ntp
else
echo "No hay ninguno. Instalando Chrony..."
yum install -y chrony
configure_chrony
fi

# Verificación
echo "Verificando sincronización..."
timedatectl status
chronyc tracking 2>/dev/null || ntpq -p

Consideraciones finales

Estos scripts son ideales para automatizar despliegues en entornos híbridos o heterogéneos, simplificando la administración del tiempo en sistemas Linux.

Salir de la versión móvil