#!/bin/bash # $HeadURL$ $LastChangedRevision$ # Modules . $(miniade) || { echo "${0##*/}: ERROR: miniade failed (hint: run 'miniade' to see error)" >&2; exit 1; } # Configurable stuff # Other globals IFNAME_REGEXP='^(lo|[a-z][a-z0-9]*[0-9])$' main() { local MY_ARGS # Defaults for options # Process options miniade_process_options --help-handler=help MY_ARGS "$@" && set -- "${MY_ARGS[@]}" # Process arguments [ $# = 1 ] || miniade_bad_usage type encode > /dev/null 2>&1 || miniade_internal "encode: command not found (hint: is PATH set correctly?)" ENCODE_OUTPUT=$(encode --decode "$1") || miniade_internal "encode: failed (hint: see messages above)" eval set -- "$ENCODE_OUTPUT" while [ $# -ge 1 ]; do case $1 in ifname) IFNAME=$2; shift ;; type) TYPE=$2; shift ;; autoconnect) AUTOCONNECT=$2; shift ;; ip4) IP4=$2; shift ;; gw4) GW4=$2; shift ;; con-name) CON_NAME=$2; shift ;; *) miniade_error "$1: unhandled nmcli keyword" ;; esac shift done # Sanity checks and derivations for VAR in IFNAME CON_NAME TYPE; do eval "[ \"X\$$VAR\" != X ]" || miniade_error "$VAR: not set" done [[ $IFNAME =~ $IFNAME_REGEXP ]] || miniade_error "$IFNAME: invalid device" # Guts # Clean ifdown --force --all 2>/dev/null || true ifconfig eth0 down 2>/dev/null || true ifconfig eth1 down 2>/dev/null || true ifconfig wlan0 down 2>/dev/null || true nmcli con del 'Wired connection 1' 2>/dev/null || true nmcli con del "$CON_NAME" 2>/dev/null || true # Configure but don't activate miniade_debug 10 "main: calling [nmcli conn add type $TYPE con-name $CON_NAME ifname $IFNAME ${AUTOCONNECT:+autoconnect $AUTOCONNECT} ${IP4:+ip4 $IP4} ${GW4:+gw4 $GW4}] ..." eval nmcli conn add type "$TYPE" con-name "$CON_NAME" ifname "$IFNAME" ${AUTOCONNECT:+autoconnect $AUTOCONNECT} ${IP4:+ip4 $IP4} ${GW4:+gw4 $GW4} } help() { local PROGNAME miniade_get_progname PROGNAME echo "Usage: $PROGNAME [ ] " exit 0 } main "$@"