Летом участились отключения электроэнергии, к несчастью оборудование провайдера находится на другой фазе. Таким образом, когда на моей фазе нет электричества майнинг не идёт, и когда на фазе провайдера нет электричества майнинг опять не идёт - в два раза больше простоев. Риги подключены к роутеру через провод. Решил сделать резервный канал из старого смартфона. Поднял на нём Wi-Fi точку доступа, для ферм купил такие свистки:
То есть, при пропадании интернета в проводе, ригам требуется переключиться на 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:
So 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