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.
96 lines
1.6 KiB
96 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} |
|
netictl - control the network interfaces |
|
|
|
${B}SYNOPSIS${N} |
|
${B}netictl${N} ${U}OPTION${N} [${U}ARG${N}] |
|
|
|
${B}OPTIONS${N} |
|
${B}-h${N} Display usage message and exit. |
|
|
|
${B}-e${N} ${U}STATE${N} |
|
Set ethernet ${U}STATE${N}, possible values: on/off, 1/0. |
|
|
|
${B}-w${N} ${U}STATE${N} |
|
Set wireless ${U}STATE${N}, possible values: on/off, 1/0. |
|
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" |
|
ARG="$OPTARG" |
|
;; |
|
w) |
|
DEV="wireless" |
|
ARG="$OPTARG" |
|
;; |
|
:) |
|
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 |
|
} |
|
|
|
# Arg handling |
|
case "$ARG" in |
|
1 | on) |
|
[ "$DEV" = "ethernet" ] && ethernet 1 || wireless 1 |
|
;; |
|
0 | off) |
|
[ "$DEV" = "ethernet" ] && ethernet 0 || wireless 0 |
|
;; |
|
*) |
|
echo "$SCRIPT: invalid argument '$ARG'" |
|
echo "Try '$SCRIPT -h' for more information." |
|
exit 1 |
|
;; |
|
esac
|
|
|