#!/bin/bash ### === CONFIGURATION === PTP_CONF="/etc/ptp4l.conf" LOG_FILE="/tmp/ptp4l.log" # Optional: check if the config exists if [[ ! -f "$PTP_CONF" ]]; then echo "ERROR: PTP config file not found at $PTP_CONF" exit 1 fi # Extract node number from hostname, e.g., apu03 → 3 HOSTNAME=$(hostname) NODE_ID="${HOSTNAME//[!0-9]/}" # Check that node number is valid if ! [[ "$NODE_ID" =~ ^[0-9]+$ ]]; then echo "ERROR: Could not extract valid node ID from hostname '$HOSTNAME'" exit 1 fi ### === SELECT INTERFACES AND MODE === if [[ "$NODE_ID" == "0" ]]; then # Node 0 is Grandmaster echo "[$HOSTNAME] Starting PTP4l in GRANDMASTER mode on eth2" CMD="ptp4l -i eth2 -m -S -f $PTP_CONF" else # All other nodes are Boundary Clocks echo "[$HOSTNAME] Starting PTP4l in BOUNDARY CLOCK mode on eth0 and eth2" CMD="ptp4l -i eth0 -i eth2 -m -S -f $PTP_CONF" fi ### === START PTP4l === echo "[$HOSTNAME] Running: $CMD" $CMD > "$LOG_FILE" 2>&1 & PTP_PID=$! echo "[$HOSTNAME] ptp4l started with PID $PTP_PID, logging to $LOG_FILE"