#!/bin/bash # ## Get connected to a network # 1. Checks if already online; skips if so # 2. If no wired devices are present then reload kernel modules # 3. If wireless devices are present, and we're still offline, then connect to WiFi die () { echo "$0:" "$@" >&2 exit 1 } # Load settings if [[ -f "/run/archiso/bootmnt/config/arch.conf" ]]; then source "/run/archiso/bootmnt/config/arch.conf" || \ die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" else source "/usr/local/bin/arch.conf" || \ die "ERROR: ARCH_WK media may be damaged. Please reboot or try another UFD" echo -n "ERROR: Settings file on ARCH_WK media missing. Using build version for now" sleep 1s echo -n "." sleep 1s echo -n "." sleep 1s echo "." fi # Init WIFI_SSID="${WIFI_SSID}" WIFI_PASS="${WIFI_PASS}" # Connect to network if ! ip a | grep -Eq '(192.168|10.[0-9]+).[0-9]+.[0-9]+'; then # LAN if ! ip l | grep -Eq '[0-9]+: +en'; then ## Reload the tg3/broadcom driver (known fix for some Dell systems) echo "No wired network adapters found; reloading drivers..." sudo modprobe -r tg3 sudo modprobe broadcom sudo modprobe tg3 sleep 5s fi # WiFi if ip l | grep -Eq '[0-9]+: +wl'; then ## Skip if we're already connected (i.e. the code above worked) if ! ip a | grep -Eq '(192.168|10.[0-9]+).[0-9]+.[0-9]+'; then echo "Attempting to connect to ${WIFI_SSID}..." netctl start wireless sleep 5s fi fi fi # Done exit 0