[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Instructions for command line usage of WiFi.



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256


Here's a script that turns WiFi on and off on my Dell laptop.  (It works on my 2-hole desktop as well -- so the complexity.  'slsware' is my domain.)

# Makes sure the primary Ethernet port (ETH0) is up and
# sets a route to rrc through ETH0 (so SSH down there will by happy with the IP it gets) and
# sets DNS (/etc/resolv.conf) to the standard slsware values (in /etc/resolv.conf.sls)
#
# UP brings up the secondary Ethernet port (ETH1) by DHCP from the Frasier_Residents DHCP server,
# removes the ETH0 default route, and replaces it with an ETH1 default
#
# DOWN just puts things back as though there were no ETH1

ETH0_DEFAULT_IP="216.17.134.201"
ETH1_DEFAULT_IP="10.200.184.254"
TRUE="0"
leadingSpace="      "

function cleanUp()
{
	# remove detritus
	sudo rm ifconfig.all ifconfig.status route.status 2>/dev/null
	# set DNS
	sudo cp /etc/resolv.conf.sls /etc/resolv.conf
	# say goodbye
	if [ "$1" != "" ]
	then
		echo ; echo "${leadingSpace}$1"
	fi
	# show routing table
	echo ; echo "${leadingSpace}route:" ; echo
	sudo route
	echo
}

ETH0="lo only"
ETH1=$ETH0
function getInterfaceNameStyle()
{
	# get an 'ifconfig' of all interfaces
	sudo ip a >ifconfig.all

	egrep -q "eth.:" ifconfig.all
	if [ "$?" == "$TRUE" ]
	then
		ETH0="eth0"
		ETH1="wlan0"
		return
	fi

	egrep -q "enp.s" ifconfig.all
	if [ "$?" == "$TRUE" ]
	then
		ETH0="enp6s0"
		ETH1="enp7s0"
		return
	fi

	if [ "$ETH0" == "lo only" ]
	then
		cleanUp "$ETH0"
		exit 0
	fi
}

# are the interfaces in the eth<n> style?
getInterfaceNameStyle

# get current ifconfig status
ip -4 link ls up >ifconfig.status

# is ETH0 up?
egrep -q "${ETH0}:.*UP" ifconfig.status
ETH0_UP=$?
# is ETH1 up?
egrep -q "${ETH1}:.*UP" ifconfig.status
ETH1_UP=$?

# make sure ETH0 is up (it probably is, but...)
if [ "$ETH0_UP" != "$TRUE" ]
then
	echo ; echo "${leadingSpace}bringing up $ETH0" ; echo
	sudo ifup $ETH0
	$ETH0_UP == "$TRUE"
fi

if [ "$1" == "up" ]
then
	# is ETH1 already up?
	if [ "${ETH1_UP}" == "$TRUE" ]
	then
		cleanUp "$ETH1 is already up"
		exit 0
	else
		echo ; echo "${leadingSpace}bringing up $ETH1" ; echo
		# bring up the DHCP interface
		sudo ifup $ETH1
		ip route >route.status
		# remove the ETH0 default route
		sudo ip route del default via $ETH0_DEFAULT_IP dev $ETH0
		# is the wifi default not in the routing table?
		egrep "default.*$ETH1" route.status
		if [ "$?" != "$TRUE" ]
		then
			# if not, put it in
			sudo ip route add default via $ETH1_DEFAULT_IP dev $ETH1
		fi
		# remove the ETH1 route to the LAN (there's already one for ETH0)
		sudo ip route del 216.17.134.0/24 dev $ETH1
	fi
elif [ "$1" == "down" ]
then
	# is ETH1 already down?
	if [ "$ETH1_UP" != "$TRUE" ]
	then
		cleanUp "$ETH1 is already down"
		exit 0
	else
 		sudo ifdown $ETH1
		sudo ip route add default via $ETH0_DEFAULT_IP dev $ETH0
		sudo cp /etc/resolv.conf.sls /etc/resolv.conf
	fi
else
	cleanUp "You forgot to say 'up' or 'down'..."
	exit 0

fi

cleanUp ""


And here's a piece of /etc/network/interfaces:

# wlan0 -- Get DHCP from SSID: Frasier_Residents, PW: <password>
iface wlan0 inet dhcp
	pre-up sudo ip addr flush dev wlan0
	wpa-ssid Frasier_Residents
	wpa-psk <password>


Hope this helps...

--
Glenn English




-----BEGIN PGP SIGNATURE-----
Version: ProtonMail

wsBzBAEBCAAGBQJfxIqdACEJEJ/XhjGCrIwyFiEELKJzD0JScCVjQA2Xn9eG
MYKsjDI02Qf8CkOUUDV1BfSUZhRNT/7Fvp8Fjqqcfy/VXTkuUDCyhBXGCqEh
gQfe+LVlq/HyZkjsDMSQl4qVzZzhETafopVi8MMwXCmcp9eVt37pLeJS+Wyh
k6/CXTqHy2or+TXW2vKtI7mWDlEqHFRlj7E1FkJJpN8WorAbuAhnX2xEGBcf
NzncvyOXsndbbqY3T1pwZFywivH9HiqAPJ4rRyjoBX7XNrv6Q170Icukq30A
y3reL1HRWmPH6JMZ7awiVWMxVe74bLQDlrYP+znwqopwQvEpYsCBP2Gd4lGv
fnUROVW6FvOvPuFEn+eK57KIgQoa/9oLdq4MbnmYEV7oebjrOQe+1w==
=Itjc
-----END PGP SIGNATURE-----


Reply to: