#!/bin/bash # # store config settings # CONF="/etc/speaker.conf" NET_CONF="/etc/netplan/01-netcfg.yaml" [ ! -f "/etc/speaker.conf" ] && exit 1 declare -A mask_table=( ["255.255.255.255"]="32" ["255.255.255.254"]="31" ["255.255.255.252"]="30" ["255.255.255.248"]="29" ["255.255.255.240"]="28" ["255.255.255.224"]="27" ["255.255.255.192"]="26" ["255.255.255.128"]="25" ["255.255.255.0"]="24" ["255.255.254.0"]="23" ["255.255.252.0"]="22" ["255.255.248.0"]="21" ["255.255.240.0"]="20" ["255.255.224.0"]="19" ["255.255.192.0"]="18" ["255.255.128.0"]="17" ["255.255.0.0"]="16" ["255.254.0.0"]="15" ["255.252.0.0"]="14" ["255.248.0.0"]="13" ["255.240.0.0"]="12" ["255.224.0.0"]="11" ["255.192.0.0"]="10" ["255.128.0.0"]="9" ["255.0.0.0"]="8" ["254.0.0.0"]="7" ["252.0.0.0"]="6" ["248.0.0.0"]="5" ["240.0.0.0"]="4" ["224.0.0.0"]="3" ["192.0.0.0"]="2" ["128.0.0.0"]="1" ["0.0.0.0"]="0" ) net_type=`sysconf ${CONF} get system ip_assign` if [ "${net_type}" = "dhcp" ]; then cat << END > ${NET_CONF} network: version: 2 ethernets: eth1: dhcp4: yes addresses: [] optional: yes dhcp-identifier: mac dhcp4-overrides: route-metric: 200 END elif [ "${net_type}" = "static" ]; then ip=`sysconf ${CONF} get system ipaddr` mask=`sysconf ${CONF} get system netmask` gateway=`sysconf ${CONF} get system gateway` dns=`sysconf ${CONF} get system dns1` dns2=`sysconf ${CONF} get system dns2` if [[ -n ${mask_table[$mask]} ]]; then masklen=${mask_table[$mask]} else masklen=24 fi if [ -n "${dns2}" ];then dns="${dns},${dns2}" fi cat << END > ${NET_CONF} network: version: 2 ethernets: eth1: dhcp4: no addresses: [${ip}/${masklen}] gateway4: ${gateway} nameservers: addresses: [${dns}] optional: false END fi