You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
1.6 KiB
102 lines
1.6 KiB
#!/bin/sh |
|
|
|
# Control the network interfaces |
|
# Depends: iproute2, netctl |
|
|
|
WIRELESS="wlan0" |
|
ETHERNET="eth0" |
|
PROFILE="eth0-dhcp" |
|
|
|
help() { |
|
B=$(tput bold) |
|
U=$(tput smul) |
|
N=$(tput sgr0) |
|
|
|
cat << EOF |
|
${B}NAME${N} |
|
netctl.sh - control the network interfaces |
|
|
|
${B}SYNOPSIS${N} |
|
${B}netctl.sh${N} [${U}OPTION${N}] [${U}COMMAND${N}] |
|
|
|
${B}OPTIONS${N} |
|
${B}-h${N} Display usage message and exit. |
|
|
|
${B}-e${N} [${U}STATE${N}] |
|
Perform action on ethernet. |
|
|
|
${B}-w${N} [${U}STATE${N}] |
|
Perform action on wireless. |
|
|
|
${B}COMMANDS${N} |
|
1, on |
|
Enable selected option. |
|
|
|
0, off |
|
Disable selected option. |
|
EOF |
|
} |
|
|
|
# Exit if no option is provided |
|
[ "$#" -eq 0 ] && help && exit 1 |
|
|
|
SCRIPT="$(basename "$0")" |
|
|
|
# Option handling |
|
while getopts ':h?e:w:' opt; do |
|
case $opt in |
|
h) |
|
help |
|
exit 0 |
|
;; |
|
e) |
|
dev="ethernet" |
|
;; |
|
w) |
|
dev="wireless" |
|
;; |
|
:) |
|
echo "$SCRIPT: option requires an argument '$OPTARG'" |
|
echo "Try '$SCRIPT -h' for more information." |
|
exit 1 |
|
;; |
|
\?) |
|
echo "$SCRIPT: invalid option '$OPTARG'" |
|
echo "Try '$SCRIPT -h' for more information." |
|
exit 1 |
|
;; |
|
esac |
|
done |
|
|
|
ethernet() { |
|
sudo netctl stop $PROFILE |
|
sudo ip link set $ETHERNET down |
|
|
|
if [ "$1" -eq 1 ]; then |
|
sudo netctl start $PROFILE |
|
fi |
|
} |
|
|
|
wireless() { |
|
if [ "$1" -eq 1 ]; then |
|
sudo ip link set $WIRELESS up |
|
else |
|
sudo ip link set $WIRELESS down |
|
fi |
|
} |
|
|
|
# Command handling |
|
[ $OPTIND -ge 2 ] && shift $((OPTIND - 2)) |
|
case "$1" in |
|
1 | on) |
|
[ "$dev" = "ethernet" ] && ethernet 1 || wireless 1 |
|
;; |
|
0 | off) |
|
[ "$dev" = "ethernet" ] && ethernet 0 || wireless 0 |
|
;; |
|
*) |
|
echo "$SCRIPT: invalid command '$1'" |
|
echo "Try '$SCRIPT -h' for more information." |
|
exit 1 |
|
;; |
|
esac
|
|
|