-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlocal_net.sh
executable file
·54 lines (51 loc) · 1.33 KB
/
local_net.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash
declare -a adapters
pointer_dir=~/.pointers
active_adapter_pointer=${pointer_dir}/localnet_default_adapter
# figure out ip address
function init(){
[[ ! -d ${pointer_dir} ]] && printf "Creating dir %s\n" ${pointer_dir} && mkdir -p ${pointer_dir}
}
function filtered_adapters(){
omit_adapters=( lo tun0 )
ip -br a | awk '{print $1}' | while read adapter
do
if [[ ! ${omit_adapters[@]} =~ ${adapter} ]]
then
printf "%s\n" ${adapter}
fi
done
}
function get_ip(){
target=$1
ip -br a | sed -ne '/'"${target}"'/ s:.*\ \([[:digit:].]\+\)\/.*:\1:p'
}
function get_subnet(){
target=$1
IPADDRESS=$(get_ip $1)
MASK=$(ip -br a | sed -ne '/'"${target}"'/ s:.*\ \([[:digit:].]\+\)\/\([[:digit:]]\+\)\ .*:\2:p')
printf "%s.0/%s\n" ${IPADDRESS%\.*} ${MASK}
}
# pick default
function pick_adapter() {
if [[ -e ${active_adapter_pointer} ]]
then
ACTIVE_ADAPTER=$(cat ${active_adapter_pointer})
fi
if [[ -z ${ACTIVE_ADAPTER} ]]
then
[[ -z ${ADAPTERS} ]] && ADAPTERS=$(filtered_adapters)
ACTIVE_ADAPTER=${ADAPTERS[0]}
printf "%s\n" ${ACTIVE_ADAPTER} > ${active_adapter_pointer}
fi
}
# refresh
init
pick_adapter
printf " * %s\n" ${adapters[@]}
for i in ${adapters[@]}
do
get_ip $i
get_subnet $i
done
#echo "${get_ips[@]}"