Резервный канал интернета из старого смартфона. Reserve Internet channel from your old smartphone

wifi
wifi-network

#1

Летом участились отключения электроэнергии, к несчастью оборудование провайдера находится на другой фазе. Таким образом, когда на моей фазе нет электричества майнинг не идёт и когда на фазе провайдера нет электричества майнинг опять не идёт - в два раза больше простоев. Риги подключены к роутеру через провод. Решил сделать резервный канал из старого смартфона. Поднял на нём Wi-Fi точку доступа, для ферм купил такие свистки:
https://ru.aliexpress.com/item/EDUP-mini-usb-wireless-wifi-adapter-150mbps-wi-fi-receiver-802-11n-usb-ethernet-adapter-network/32577120512.html?spm=a2g0s.9042311.0.0.3da233ed5OLg3L
То есть, при пропадании интернета в проводе, ригам требуется переключиться на Wi-Fi и продолжать майнить. Ниже представлен скрипт автоматизирующий это переключение.

In summer, power outages have become more frequent, unfortunately the provider’s equipment is in a different phase. Thus, when there is no electricity in my phase, mining stops and when the provider’s phase has no electricity, mining stops again - two times more downtime. My rigs are connected to the router via a wire. So I decided to make a backup channel from an old smartphone. Raised on it Wi-Fi access point, for farms bought such adaptors:
https://ru.aliexpress.com/item/EDUP-mini-usb-wireless-wifi-adapter-150mbps-wi-fi-receiver-802-11n-usb-ethernet-adapter-network/32577120512.html?spm=a2g0s.9042311.0.0.3da233ed5OLg3L
That is, when the wired Internet is lost, the rigs need to switch to Wi-Fi and continue to mine. Below is a script that automates this switching.

Создайте файл /root/switch-inet-connection.sh с следующим содержимым:
Create file /root/switch-inet-connection.sh as follows:

#!/bin/bash
 
 # path to log file
 LOGFILE="/var/log/internet.log"
 echo `date +'%Y/%m/%d %H:%M:%S'` Internet check script started  >> ${LOGFILE}
 
 # host to check internet connection, 
 HOST="8.8.4.4"
  
 # waiting to up interfaces
 sleep 30 
 
 # Это так на всякий случай
 echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
 echo 0 > /proc/sys/net/ipv4/conf/wlan0/send_redirects
 echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
 echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
 
 # geting eth0 gateway address
 P1T=$(route -n | grep "eth0" | awk '$1=="0.0.0.0" {print $2}')
 P1=$(echo $P1T | awk '{print $1}')
 echo $P1
 echo `date +'%Y/%m/%d %H:%M:%S'` "gw for eth0 =" $P1  >> ${LOGFILE}
 
 # create static route to HOST for checking connect via eth0
 echo `date +'%Y/%m/%d %H:%M:%S'` "Static route for eth0 created"  >> ${LOGFILE}
 route add -host $HOST gw $P1 >> ${LOGFILE}

 while (true) do

  echo `date +'%Y/%m/%d %H:%M:%S'` "Checking inet"

  # this file creates when it's switching to wlan0
  LOCKFILE="/tmp/internet.lock"

  # pinging HOST to check eth0 connection
  ping -c 3 -n -q ${HOST} > /dev/null

  # if HOST is unreachable
  if [ $? -ne "0" ]; then
 
   # if there is no LOCKFILE
   if [ ! -f ${LOCKFILE} ]; then
 
    # switching to wlan0 connection
    # geting wlan0 gateway address
    P2T=$(route -n | grep "wlan0" | awk '$1=="0.0.0.0" {print $2}')
    P2=$(echo $P2T | awk '{print $1}')
    echo $P2
    echo `date +'%Y/%m/%d %H:%M:%S'` "gw for wlan0 =" $P2  >> ${LOGFILE}

    route add default gw $P2  >> ${LOGFILE}
        
    # creating LOCKFILE
    touch ${LOCKFILE}
    
    # Loging
    echo `date +'%Y/%m/%d %H:%M:%S'` Internet connection changed to wlan >> ${LOGFILE}
  
    fi
  
  # if HOST is reachable
  else
   
   # if LOCKFILe exists
   if [ -f ${LOCKFILE} ]; then
    
    # switching to eth0
    
    route del default  >> ${LOGFILE}
    
    # removing LOCKFILE
    rm -f ${LOCKFILE}
    
    # loging
    echo `date +'%Y/%m/%d %H:%M:%S'` Internet connetction changed to LAN >> ${LOGFILE}
   fi
  fi

  # pause before next check
  sleep 5

 done 

Скрипт сам определит IP-адреса шлюзов сетевых интерфейсов для маршрутизации пакетов. Единственное, что может потребуется заменить - это имена сетевых интерфейсов eth0 и wlan0.
The script will determine the IP addresses of the network interface gateways for packet routing. The only thing you may need to replace is the names of the network interfaces eth0 and wlan0.

Для автозапуска скрипта в добавьте следующие строки в /etc/rc.local выше exit(0):
For autostart add this strings in /etc/rc.local upper exit(0):

#Script for internet switching between LAN and WLAN
screen -dmS sic /root/switch-inet-connection.sh

Скрипт запускается в screen, так же как майнеры, так что можно посмотреть на результаты по алиасу sic или по логу /var/log/internet.log
Stript starts in screen like miners, so you can look it’s running with alias sic or in log-file /var/log/internet.log


#2

Cool!