/ Scripts / network-check.sh
network-check.sh
 1  #!/bin/bash
 2  
 3  ##############
 4  # ASSERTIONS #
 5  ##############
 6  
 7  #check to see if the device is connected to the network
 8  ip route get 1 2>/dev/null || exit 1
 9  
10  #############
11  # VARIABLES #
12  #############
13  
14  ip_current=$(ip route get 1 | awk '{print $7}')
15  interface_current=$(ip route get 1 | awk '{print $5}')
16  network_current="$(ip route | grep $interface_current | grep -v default | awk '{print $1}')"
17  ronin_data_dir=$1
18  ronin_username=$2
19  
20  #############
21  # FUNCTIONS #
22  #############
23  
24  _backup_network_info(){
25      echo -e "ip=${ip_current}\nnetwork=${network_current}\n" > "${ronin_data_dir}/ip.txt"
26      chown "${ronin_username}:${ronin_username}" "${ronin_data_dir}"/ip.txt
27  }
28  
29  _set_uwf_rules() {
30      ufw allow from "${network_current}" to any port "80" >/dev/null
31      ufw allow from "${network_current}" to any port "22" >/dev/null
32      ufw allow from "${network_current}" to any port "50002" >/dev/null
33      ufw reload
34  }
35  
36  ###############
37  # PREPARATION #
38  ###############
39  
40  # First time run
41  if [ ! -f "${ronin_data_dir}"/ip.txt ]; then
42      _set_uwf_rules
43      _backup_network_info
44      exit
45  fi
46  
47  # Failure state
48  if ! ufw status | head -n 1 | grep "Status: active" >/dev/null; then
49      echo "UFW found to be inactive!"
50      exit 1
51  fi
52  
53  # Redundancy check
54  . "${ronin_data_dir}"/ip.txt
55  # shellcheck disable=SC2154
56  if [ "${network}" = "${network_current}" ]; then
57      echo "No changes found since last run."
58      exit
59  fi
60  
61  #################
62  # THE PROCEDURE #
63  #################
64  
65  # Uncomment if you want rules from previous network to be removed
66  #while ufw status | grep "${network}"; do
67  #    ufw status numbered | grep "${network}" | head -n 1 | sed -E 's/\[\s*([0-9]+)\].*/\1/' | xargs -n 1 ufw --force delete
68  #done
69  _set_uwf_rules
70  
71  # Saving the state is the last step on purpose, in case the procedure gets killed for whatever reason before every alteration is completed.
72  _backup_network_info
73  
74  echo "Completed updating network settings"