# run-single.sh # # This script sets up the environment for running a Docker Compose configuration with XBee networks. # It accepts optional --index=, --subnet=, --serial-speed=, and --port= arguments # to specify the XBEE_INDEX, BASE_SUBNET, XBEE_BAUDRATE, and XBEE_PORT values. # If no index is provided, it defaults to 1. If no subnet is provided, it defaults to 192.168.1. # If no serial-speed is provided, it defaults to 230400. If no port is provided, it defaults to /dev/ttyUSB0. # # Usage: # ./run-single.sh # Runs with default index (1), default subnet (192.168.1), default speed (230400), and default port (/dev/ttyUSB0) # ./run-single.sh --index=2 # Runs with index 2 and default values for other options # ./run-single.sh --subnet=192.168.50 # Runs with default index (1), specified subnet, and default values for other options # ./run-single.sh --index=3 --subnet=192.168.50 # Runs with specified index, specified subnet, and default values for speed and port # ./run-single.sh --serial-speed=115200 --port=/dev/ttyUSB1 # Runs with specified serial-speed and port with default values for other options # IPs assigned: # BASE_SUBNET: eg.: 10.10.10 # DEFAULT_GATEWAY: ${BASE_SUBNET}.1, eg.: 10.10.10.1 # DEFAULT_IPVLAN_IP: ${BASE_SUBNET}.20 eg.: 10.10.10.20 # DEFAULT_MACVLAN_IP: ${BASE_SUBNET}.30 eg.: 10.10.10.30 # XBEE_NET_SRC_IP: ${BASE_SUBNET}.20${index} eg.: 10.10.10.201 (all Xbnets will be in the 200+ range) #!/bin/bash # Default values INDEX=1 BASE_SUBNET="10.10.10" XBEE_BAUDRATE=230400 XBEE_PORT="/dev/ttyUSB0" # Parse command-line arguments for arg in "$@" do case $arg in --index=*) INDEX="${arg#*=}" shift # Remove --index= from processing ;; --subnet=*) BASE_SUBNET="${arg#*=}" shift # Remove --subnet= from processing ;; --serial-speed=*) XBEE_BAUDRATE="${arg#*=}" shift # Remove --serial-speed= from processing ;; --port=*) XBEE_PORT="${arg#*=}" shift # Remove --port= from processing ;; *) ;; esac done # Create a .env file with the specified parameters cat < .env # Base params BASE_SUBNET=${BASE_SUBNET} XBEE_INDEX=${INDEX} # Default params DEFAULT_GATEWAY=${BASE_SUBNET}.1 DEFAULT_IPVLAN_IP=${BASE_SUBNET}.20 # Required only when running ipvlan net (look in docker compose) DEFAULT_MACVLAN_IP=${BASE_SUBNET}.30 # Required only when running macvlan net (look in docker compose) # Configuration for xbnet XBEE_PORT=${XBEE_PORT} XBEE_BAUDRATE=${XBEE_BAUDRATE} XBEE_NET_SRC_IP=${BASE_SUBNET}.20${INDEX} # Ensure this IP matches the network range XBEE_NET_IFACE_NAME=xbnet${INDEX} EOF # Restart Docker Compose services docker compose -f docker-compose-run-single.yml down docker compose -f docker-compose-run-single.yml up --build