Перейти к содержанию

Тотальный контроль ферм - Linux.


itraxe

Рекомендуемые сообщения

Ищу софт для контролинга большого кол-ва ферм.

Под никс.

 

Семейство дебиан.

 

Авторебут .

Масс смена пулов.

 

И другие решения для упрощения жизни.

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 71
  • Создана
  • Последний ответ

Топ авторов темы

это пул manager для бампа для одной машины , а нужно что бы контроль всех ферм был в одной панели с массовой сменой пулов сразу на всех или на выбранных

Ссылка на комментарий
Поделиться на другие сайты

Хотел тоже такой контроль, так как 3 фермы в работе. Пока набросал небольшой рабочий скрипт без проверок.

 

-Запускается на локальном PC, на майнеры ничего грузить не нужно.

-Необходимо настроить беспарольную ssh авторизацию

-Пока на 2 майнера, можно сделать больше

-Показывает статистику всех майнеров,

-Правит конфиг всех майнеров сразу или по выбору

 

Если что-то типо такого вам нужно, могу еще что-то добавить. Проверил на Linux BAMT 1.3. 

p.s. На счет авторебута не понял, по какому условию должен срабатывать ?

#!/bin/sh
# author: demontager
#

MINER1="192.168.1.104"
MINER2="192.168.1.101"
MINER3=""
#########################POOL CONFIG####################################
pool() {
    
echo '
{
"pools" : [
            {
                "url" : "stratum+tcp://server:3333",
                "user" : "User",
                "pass" : "pass"
            }
],
"api-listen" : true,
"intensity" : "20,20,20",
"vectors" : "1",
"worksize" : "256",
"kernel" : "scrypt",
"auto-fan" : true,
"temp-cutoff" : "85",
"temp-overheat" : "80",
"temp-target" : "70",
"expiry" : "10",
"gpu-dyninterval" : "7",
"log" : "5",
"queue" : "0",
"retry-pause" : "5",
"scan-time" : "5",
"scrypt" : true,
"temp-hysteresis" : "3",
"shares" : "0",
"shaders" : "1792",
"thread-concurrency" : "16000",
"gpu-thread" : "1",
"gpu-engine" : "1075,1075,1075",
"sharethreads" : "32",
"lookup-gap" : "2",
"gpu-powertune" : "20",
"gpu-memclock" : "1250,1250,1250"

}'| ssh root@$HOST 'cat > /etc/bamt/cgminer.conf'

}
#############################END########################################

config() {
echo -n "1. Specify miner: [1/2/3] (default:all) "
read miner
if [ "$miner" = '1' ] || [ "$miner" = '2' ] || [ "$miner" = '3' ]; then
  if [ "$miner" = '1' ]; then
    HOST="$MINER1"
    pool
    #scp $CONF root@$MINER1:/etc/bamt/cgminer.conf.test
    ssh root@"$MINER1" -p 22 'mine restart'
  elif [ "$miner" = '2' ]; then
    HOST="$MINER2"
    pool
    ssh root@"$MINER2" -p 22 'mine restart'
  fi
elif [ "$miner" = 'all' ] || [ "$miner" = '' ]; then
    HOST="$MINER1"
    pool
    ssh root@"$MINER1" -p 22 'mine restart'
    unset HOST
    HOST="$MINER2"
    pool
    ssh root@"$MINER2" -p 22 'mine restart'    
fi
}

status() {
echo ""
echo "-----------------MINER IP:$MINER1--------------------------------"    
ssh root@192.168.1.104 -p 22 '/opt/bamt/viewgpu'     
echo "-----------------MINER IP:$MINER2--------------------------------"
ssh root@"$MINER2" -p 22 '/opt/bamt/viewgpu'
echo ""
}

viewpool() {
echo -n "1. Specify miner: [1/2/3] "
read miner
if [ "$miner" = '1' ] || [ "$miner" = '2' ] || [ "$miner" = '3' ]; then
  if [ "$miner" = '1' ]; then
    ssh root@"$MINER1" -p 22 'cat /etc/bamt/cgminer.conf'    
  elif [ "$miner" = '2' ]; then
    ssh root@"$MINER2" -p 22 'cat /etc/bamt/cgminer.conf'
  fi
fi         
}

case "$1" in
        config)
                config
                ;;
        viewpool)
                viewpool                                                  
                ;;
         status)
                status
                 ;;       
           *)
                echo "Usage: `basename $0` (config|status|viewpool)"
                exit 1
                ;;
esac
Изменено пользователем Demontager
Ссылка на комментарий
Поделиться на другие сайты

Вот инетресный скрипт для колребута при отвале карт

 

#!/bin/bash

#Set your targeted minimum temp here, system will issue a cold
#reboot if a card temp falls below this number
targetMinTemp=50
i=0
(/opt/bamt/viewgpu | awk '{ print $2; }' | cut -c -2 > /tmp/viewgpu) & pid=$!
echo $pid
(sleep 10 && kill $pid)
sleep 15
array=(`cat /tmp/viewgpu`)
if [ ${#array[@]} -eq 0 ]; then
  echo "`date +%m-%d-%Y` `uptime | awk -F, '{sub(".*ge ",x,$1);print $1}'` viewgpu command failed to run, rebooting" >>  /home/$(grep '1000' /etc/passwd | cut -d ':' -f 1)/autoRebooter.log
  /sbin/coldreboot &
  sleep 30
  echo s > /proc/sysrq-trigger
  sleep 10
  echo b > /proc/sysrq-trigger
fi
for temp in ${array[@]}; do
  if [ $temp -lt $targetMinTemp ]; then
    echo "`date +%m-%d-%Y` `uptime | awk -F, '{sub(".*ge ",x,$1);print $1}'` card number $i has stopped, its current temp is $temp, coldrebooting" >> /home/$(grep '1000' /etc/passwd | cut -d ':' -f 1)/autoRebooter.log
    /sbin/coldreboot &
    sleep 30
    echo s > /proc/sysrq-trigger
    sleep 10
    echo b > /proc/sysrq-trigger
  fi
i=$(($i+1))
done

Ссылка на комментарий
Поделиться на другие сайты

Я уже видел этот скрипт. Его имеет смысл прописать в cron на майнере и при обнаружении отваливания видеокарт от майнинга, он будет делать ребут. 

Я могу добавить часть этого кода в свой скрипт. Тогда будет срабатывать ребут таким образом - запускается скрипт, проверяются параметры видеокарт на всех майнерах и если обнаруживается что где-то отвалился майнер, выдаст сообщение/сделает ребут. Тогда можно сделать чтобы cron запускался и на одном, к примеру локальном PC.

Ссылка на комментарий
Поделиться на другие сайты

Может вообще допилим анубис или что то подобное и получим полноценную систему управления тотального контроля ферм ?

 

Есть желание ?

Ссылка на комментарий
Поделиться на другие сайты

Может вообще допилим анубис или что то подобное и получим полноценную систему управления тотального контроля ферм ?

 

Есть желание ?

Анубис вроде не совсем то, что требуется. да и с безопасностью там беда.

Ссылка на комментарий
Поделиться на другие сайты

Держите мой скрипт, может пригодится: http://rghost.ru/52931809 (общий размер около 5 килобайт) - писал на ruby. Умеет смотреть статистику ферм, создавать новый файл pools.conf из шаблона и загружать его через rsync. В планах добавить проверку на sick/dead и сделать авторебут.

 

Требования:

1. должен стоять ruby, так же гемы colorize и erubis. На фермах должен быть разрешен доступ к cgminer api. Cgminer так же должен брать файл по адресу /etc/bamt/autopools.conf (можно изменить в файте upload.sh), это делается такой строчкой:

 

"include" : "/etc/bamt/autopools.conf"

 

2. Нужно предварительно отредактировать файлы cgminer.rb и upload.sh, прописать айпи ферм и пулы. На сервере должен быть настроен вход по ssh без пароля (гуглить по фразе ssh-copy-id)

3. Запуск через консоль: ruby cgminer.rb conf

 

Писалось для себя, лично мне пользоваться этим очень удобно, один раз прописать айпишники ферм и потом одной командой можно постоянно изменить адрес пулов.

 

Кому нужна инфа из первых рук - приглашаю вас в конфу в скайпе, пишите в лс - добавлю.

Изменено пользователем FancyDancy
Ссылка на комментарий
Поделиться на другие сайты

Я в ruby не селен, допиливаю то, что понимаю, мне так легче. Но все равно спасибо за труд!
 
Нужна помощь кто знает bash. Суть задачи такая - нужно чтобы на удаленном хосте менялся только конфиг серверов, а настройки видеокарт оставались прежними. Таким образом в скрипте будут только указываются настройки серверов stratum. Я пока думаю как это реализовать, может есть у кого какие мысли.
 
Вторая ревизия скрипта
Изменения:
- Добавил код авторебута, теперь можно прописать выполнение скрипта в cron  и все майнеры будут проверятся на предмет отваливания от майнинга
- Добавил 3 майнера + можно задать ssh порт каждого отдельно

 

#!/bin/bash
# author: demontager
#

MINER1="192.168.1.104"
PORT1="22"
##
MINER2="192.168.1.101"
PORT2="22"
##
MINER3="192.168.1.105"
PORT3="222"
#########################POOL CONFIG####################################
pool() {
echo '{
"pools" : [
        {
                "url" : "stratum+tcp://server:3333",
                "user" : "User",
                "pass" : "x"
        },
    
        {
                "url" : "stratum+tcp://server:3333",
                "user" : "User",
                "pass" : "x"

        }
]
,
"auto-fan" : true,
"auto-gpu" : true,
"temp-cutoff" : "84",
"temp-overheat" : "81",
"temp-target" : "69",
"temp-hysteresis" : "2",
"gpu-fan" : "20-100",
"intensity" : "20",
"worksize" : "256",
"lookup-gap" : "2",
"thread-concurrency" : "24000",
"api-port" : "4028",
"expiry" : "30",
"gpu-platform" : "0",
"gpu-threads" : "1",
"gpu-engine" : "1075",
"gpu-memclock" : "1250",
"gpu-powertune" : "20",
"log" : "5",
"no-pool-disable" : true,
"no-submit-stale" : true,
"queue" : "1",
"scan-time" : "30",
"scrypt" : true,
"shares" : "0",
"kernel-path" : "/usr/local/bin"
}'| ssh root@$HOST -p $PORT 'cat > /etc/bamt/cgminer.conf'
}
#############################END########################################

config() {
echo -n "1. Specify miner: [1/2/3] (default:all) "
read miner
if [ "$miner" = '1' ] || [ "$miner" = '2' ] || [ "$miner" = '3' ]; then
  if [ "$miner" = '1' ]; then
    HOST="$MINER1"
    PORT="$PORT1"
    pool
    ssh root@"$MINER1" -p "$PORT1" 'mine restart'
  elif [ "$miner" = '2' ]; then
    HOST="$MINER2"
    PORT="$PORT2"
    pool
    ssh root@"$MINER2" -p "$PORT2" 'mine restart'
  elif [ "$miner" = '3' ]; then
    HOST="$MINER3"
    PORT="$PORT3"
    pool
    ssh root@"$MINER3" -p "$PORT3" 'mine restart'
  fi
elif [ "$miner" = 'all' ] || [ "$miner" = '' ]; then
    HOST="$MINER1"
    PORT="$PORT1"
    pool
    ssh root@"$MINER1" -p "$PORT1" 'mine restart'
    unset HOST
    unset PORT
    HOST="$MINER2"
    PORT="$PORT2"
    pool
    ssh root@"$MINER2" -p "$PORT2" 'mine restart'
    unset HOST
    unset PORT
    HOST="$MINER3"
    PORT="$PORT3"
    pool
    ssh root@"$MINER3" -p "$PORT3" 'mine restart'    
fi
}

status() {
echo ""
echo "-----------------MINER IP:$MINER1"	
ssh root@"$MINER1" -p "$PORT1" '/opt/bamt/viewgpu'
echo "" 	
echo "-----------------MINER IP:$MINER2"
ssh root@"$MINER2" -p "$PORT2" '/opt/bamt/viewgpu'
echo ""
echo "-----------------MINER IP:$MINER3"
ssh root@"$MINER3" -p "$PORT3" '/opt/bamt/viewgpu'
echo ""
}




cron() {
cat <<'EOF' | ssh root@$HOST -p $PORT 'cat - > /etc/bamt/cardcheck.sh && chmod +x /etc/bamt/cardcheck.sh && /etc/bamt/cardcheck.sh'
targetMinTemp=50
i=0
(/opt/bamt/viewgpu | awk '{ print $2; }' | cut -c -2 > /tmp/viewgpu)
sleep 5
array=(`cat /tmp/viewgpu`)
if [ ${#array[@]} -eq 0 ]; then
  echo "`date +%m-%d-%Y` `uptime | awk -F, '{sub(".*ge ",x,$1);print $1}'` viewgpu command failed to run, rebooting" >>  /etc/bamt/autoRebooter.log
  /sbin/coldreboot &
  sleep 30
  echo s > /proc/sysrq-trigger
  sleep 10
  echo b > /proc/sysrq-trigger
elif [ ${#array[@]} -ne 0 ]; then
   INTERFACE=`cat /proc/net/arp | grep -m 1 -v Device | awk '{print $6}'`
   echo "----------------MINER IP:`/sbin/ifconfig $INTERFACE | grep 'inet addr:' | cut -d: -f2 | cut -d' ' -f1 | tr -d '[:blank:]'`"
   echo "`/opt/bamt/viewgpu`"
   echo ""
fi
for temp in ${array[@]}; do
  if [ $temp -lt $targetMinTemp ]; then
    echo "`date +%m-%d-%Y` `uptime | awk -F, '{sub(".*ge ",x,$1);print $1}'` card number $i has stopped, its current temp is $temp, coldrebooting" >> /etc/bamt/autoRebooter.log
    /sbin/coldreboot &
    sleep 30
    echo s > /proc/sysrq-trigger
    sleep 10
    echo b > /proc/sysrq-trigger
  fi
i=$(($i+1))
done
EOF

}

cronhost() {
HOST="$MINER1"
PORT="$PORT1"
cron
unset PORT
unset HOST
HOST="$MINER2"
PORT="$PORT2"
cron
unset HOST
unset PORT
HOST="$MINER3"
PORT="$PORT3"
cron	
}

viewpool() {
echo -n "1. Specify miner: [1/2/3] "
read miner
if [ "$miner" = '1' ] || [ "$miner" = '2' ] || [ "$miner" = '3' ]; then
  if [ "$miner" = '1' ]; then
    ssh root@"$MINER1" -p "$PORT1" 'cat /etc/bamt/cgminer.conf'	
  elif [ "$miner" = '2' ]; then
    ssh root@"$MINER2" -p "$PORT2" 'cat /etc/bamt/cgminer.conf'
  elif [ "$miner" = '3' ]; then
    ssh root@"$MINER3" -p "$PORT3" 'cat /etc/bamt/cgminer.conf'
  fi
fi     	
}

case "$1" in
        config)
                config
                ;;
        viewpool)
                viewpool                                                  
                ;;
         status)
                status
                 ;;       
           cron)
                 cronhost
                 ;;
           *)
                echo "Usage: `basename $0` (config|status|viewpool|cron)"
                exit 1
                ;;
esac

 

 

Изменено пользователем Demontager
Ссылка на комментарий
Поделиться на другие сайты

Нужна помощь кто знает bash. Суть задачи такая - нужно чтобы на удаленном хосте менялся только конфиг серверов, а настройки видеокарт оставались прежними. Таким образом в скрипте будут только указываются настройки серверов stratum. Я пока думаю как это реализовать, может есть у кого какие мысли.

 

Ну я же писал. В cgminer.conf убрать список пулов и добавить строчку:

"include" : "/etc/bamt/autopools.conf"

 

Адрес и название изменить по надобности. Теперь этот файл можно менять как угодно, сгмайнер будет брать список пулов именно из него, а основной cgminer.conf будет нетронутым.

Ссылка на комментарий
Поделиться на другие сайты

Да, можно и так, но хочется еще как я написал. Хотя можно и в сам скрипт прописать чтобы автоматически менял cgminer.conf по схеме с include.

 

Сделал как хотел, править cgminer.conf не нужно.

 

Изменения:

- В скрипте задаются только сервера для майнинга

- Добавил описание опций

 

 

#!/bin/bash
# author: demontager
#

MINER1="192.168.1.104"
PORT1="22"
##
MINER2="192.168.1.101"
PORT2="22"
##
MINER3="192.168.1.105"
PORT3="222"
#########################POOL CONFIG####################################
pool() {
cat <<'EOF' | ssh root@$HOST -p $PORT 'cat - > /tmp/pool.tmp && sed -n "/]/{:a;n;/}/b;p;ba}" /etc/bamt/cgminer.conf > /tmp/cgminer.conf.tmp \
&& cat /tmp/pool.tmp /tmp/cgminer.conf.tmp > /etc/bamt/cgminer.conf && echo "}" >> /etc/bamt/cgminer.conf \
&& rm /tmp/pool.tmp /tmp/cgminer.conf.tmp'
{
"pools" : [
{
"url" : "stratum+tcp://server:3333",
"user" : "User",
"pass" : "x"
},

{
"url" : "stratum+tcp://server1:3333",
"user" : "User",
"pass" : "x"

}
]
EOF
}
#############################END########################################

config() {
echo -n "1. Specify miner: [1/2/3] (default:all) "
read miner
if [ "$miner" = '1' ] || [ "$miner" = '2' ] || [ "$miner" = '3' ]; then
if [ "$miner" = '1' ]; then
HOST="$MINER1"
PORT="$PORT1"
pool
ssh root@"$MINER1" -p "$PORT1" 'mine restart'
elif [ "$miner" = '2' ]; then
HOST="$MINER2"
PORT="$PORT2"
pool
ssh root@"$MINER2" -p "$PORT2" 'mine restart'
elif [ "$miner" = '3' ]; then
HOST="$MINER3"
PORT="$PORT3"
pool
ssh root@"$MINER3" -p "$PORT3" 'mine restart'
fi
elif [ "$miner" = 'all' ] || [ "$miner" = '' ]; then
HOST="$MINER1"
PORT="$PORT1"
pool
ssh root@"$MINER1" -p "$PORT1" 'mine restart'
unset HOST
unset PORT
HOST="$MINER2"
PORT="$PORT2"
pool
ssh root@"$MINER2" -p "$PORT2" 'mine restart'
unset HOST
unset PORT
HOST="$MINER3"
PORT="$PORT3"
pool
ssh root@"$MINER3" -p "$PORT3" 'mine restart'
fi
}

status() {
echo ""
echo "-----------------MINER IP:$MINER1"
ssh root@"$MINER1" -p "$PORT1" '/opt/bamt/viewgpu'
echo ""
echo "-----------------MINER IP:$MINER2"
ssh root@"$MINER2" -p "$PORT2" '/opt/bamt/viewgpu'
echo ""
echo "-----------------MINER IP:$MINER3"
ssh root@"$MINER3" -p "$PORT3" '/opt/bamt/viewgpu'
echo ""
}




cron() {
cat <<'EOF' | ssh root@$HOST -p $PORT 'cat - > /etc/bamt/cardcheck.sh && chmod +x /etc/bamt/cardcheck.sh && /etc/bamt/cardcheck.sh'
targetMinTemp=50
i=0
(/opt/bamt/viewgpu | awk '{ print $2; }' | cut -c -2 > /tmp/viewgpu)
sleep 5
array=(`cat /tmp/viewgpu`)
if [ ${#array[@]} -eq 0 ]; then
echo "`date +%m-%d-%Y` `uptime | awk -F, '{sub(".*ge ",x,$1);print $1}'` viewgpu command failed to run, rebooting" >> /etc/bamt/autoRebooter.log
/sbin/coldreboot &
sleep 30
echo s > /proc/sysrq-trigger
sleep 10
echo b > /proc/sysrq-trigger
elif [ ${#array[@]} -ne 0 ]; then
INTERFACE=`cat /proc/net/arp | grep -m 1 -v Device | awk '{print $6}'`
echo "----------------MINER IP:`/sbin/ifconfig $INTERFACE | grep 'inet addr:' | cut -d: -f2 | cut -d' ' -f1 | tr -d '[:blank:]'`"
echo "`/opt/bamt/viewgpu`"
echo ""
fi
for temp in ${array[@]}; do
if [ $temp -lt $targetMinTemp ]; then
echo "`date +%m-%d-%Y` `uptime | awk -F, '{sub(".*ge ",x,$1);print $1}'` card number $i has stopped, its current temp is $temp, coldrebooting" >> /etc/bamt/autoRebooter.log
/sbin/coldreboot &
sleep 30
echo s > /proc/sysrq-trigger
sleep 10
echo b > /proc/sysrq-trigger
fi
i=$(($i+1))
done
EOF

}

cronhost() {
HOST="$MINER1"
PORT="$PORT1"
cron
unset PORT
unset HOST
HOST="$MINER2"
PORT="$PORT2"
cron
unset HOST
unset PORT
HOST="$MINER3"
PORT="$PORT3"
cron
}

viewpool() {
echo -n "1. Specify miner: [1/2/3] "
read miner
if [ "$miner" = '1' ] || [ "$miner" = '2' ] || [ "$miner" = '3' ]; then
if [ "$miner" = '1' ]; then
ssh root@"$MINER1" -p "$PORT1" 'cat /etc/bamt/cgminer.conf'
elif [ "$miner" = '2' ]; then
ssh root@"$MINER2" -p "$PORT2" 'cat /etc/bamt/cgminer.conf'
elif [ "$miner" = '3' ]; then
ssh root@"$MINER3" -p "$PORT3" 'cat /etc/bamt/cgminer.conf'
fi
fi
}

msg() {
echo "Mass mining control, check and status view"
echo ""
echo "Usage: `basename $0` <config|viewpool|status|cron>"
cat <<EOF

Options:
config[#] :change single miner config or all
viewpool[#] :view single miner config - cgminer.conf
status :check miners temps and connected pools
cron :check if miners do actual mining, if idle/hung do coldreboot

Tip: It is possible to put script in crontab to do miners probe.
EOF
}

case "$1" in
config)
config
;;
viewpool)
viewpool
;;
status)
status
;;
cron)
cronhost
;;
*)
msg
exit 1
;;
esac

 

 

Изменено пользователем Demontager
Ссылка на комментарий
Поделиться на другие сайты

Ищу софт для контролинга большого кол-ва ферм.

Под никс.

 

Семейство дебиан.

 

Авторебут .

Масс смена пулов.

 

И другие решения для упрощения жизни.

 

https://phpminer.com веб интерфейс, меняет пулы на лету и много чего еще. (я использую только для смены пулов)

Ссылка на комментарий
Поделиться на другие сайты

 

Ищу софт для контролинга большого кол-ва ферм.

Под никс.

 

Семейство дебиан.

 

Авторебут .

Масс смена пулов.

 

И другие решения для упрощения жизни.

 

https://phpminer.com веб интерфейс, меняет пулы на лету и много чего еще. (я использую только для смены пулов)

 

 

Массовой смены нету там

Хотя я ставил смотрел

Реализация очень даже ничего

 

Может вообще допилим анубис или что то подобное и получим полноценную систему управления тотального контроля ферм ?

 

Есть желание ?

Анубис вроде не совсем то, что требуется. да и с безопасностью там беда.

 

 

А при чем тут безопасность , если все в приделах локальной сети работает?

Держите мой скрипт, может пригодится: http://rghost.ru/52931809 (общий размер около 5 килобайт) - писал на ruby. Умеет смотреть статистику ферм, создавать новый файл pools.conf из шаблона и загружать его через rsync. В планах добавить проверку на sick/dead и сделать авторебут.

 

Требования:

1. должен стоять ruby, так же гемы colorize и erubis. На фермах должен быть разрешен доступ к cgminer api. Cgminer так же должен брать файл по адресу /etc/bamt/autopools.conf (можно изменить в файте upload.sh), это делается такой строчкой:

 

"include" : "/etc/bamt/autopools.conf"

 

2. Нужно предварительно отредактировать файлы cgminer.rb и upload.sh, прописать айпи ферм и пулы. На сервере должен быть настроен вход по ssh без пароля (гуглить по фразе ssh-copy-id)

3. Запуск через консоль: ruby cgminer.rb conf

 

Писалось для себя, лично мне пользоваться этим очень удобно, один раз прописать айпишники ферм и потом одной командой можно постоянно изменить адрес пулов.

 

Кому нужна инфа из первых рук - приглашаю вас в конфу в скайпе, пишите в лс - добавлю.

 

 

Я в ruby не селен, допиливаю то, что понимаю, мне так легче. Но все равно спасибо за труд!

 

Нужна помощь кто знает bash. Суть задачи такая - нужно чтобы на удаленном хосте менялся только конфиг серверов, а настройки видеокарт оставались прежними. Таким образом в скрипте будут только указываются настройки серверов stratum. Я пока думаю как это реализовать, может есть у кого какие мысли.

 

Вторая ревизия скрипта

Изменения:

- Добавил код авторебута, теперь можно прописать выполнение скрипта в cron  и все майнеры будут проверятся на предмет отваливания от майнинга

- Добавил 3 майнера + можно задать ssh порт каждого отдельно

 

#!/bin/bash
# author: demontager
#

MINER1="192.168.1.104"
PORT1="22"
##
MINER2="192.168.1.101"
PORT2="22"
##
MINER3="192.168.1.105"
PORT3="222"
#########################POOL CONFIG####################################
pool() {
echo '{
"pools" : [
        {
                "url" : "stratum+tcp://server:3333",
                "user" : "User",
                "pass" : "x"
        },
    
        {
                "url" : "stratum+tcp://server:3333",
                "user" : "User",
                "pass" : "x"

        }
]
,
"auto-fan" : true,
"auto-gpu" : true,
"temp-cutoff" : "84",
"temp-overheat" : "81",
"temp-target" : "69",
"temp-hysteresis" : "2",
"gpu-fan" : "20-100",
"intensity" : "20",
"worksize" : "256",
"lookup-gap" : "2",
"thread-concurrency" : "24000",
"api-port" : "4028",
"expiry" : "30",
"gpu-platform" : "0",
"gpu-threads" : "1",
"gpu-engine" : "1075",
"gpu-memclock" : "1250",
"gpu-powertune" : "20",
"log" : "5",
"no-pool-disable" : true,
"no-submit-stale" : true,
"queue" : "1",
"scan-time" : "30",
"scrypt" : true,
"shares" : "0",
"kernel-path" : "/usr/local/bin"
}'| ssh root@$HOST -p $PORT 'cat > /etc/bamt/cgminer.conf'
}
#############################END########################################

config() {
echo -n "1. Specify miner: [1/2/3] (default:all) "
read miner
if [ "$miner" = '1' ] || [ "$miner" = '2' ] || [ "$miner" = '3' ]; then
  if [ "$miner" = '1' ]; then
    HOST="$MINER1"
    PORT="$PORT1"
    pool
    ssh root@"$MINER1" -p "$PORT1" 'mine restart'
  elif [ "$miner" = '2' ]; then
    HOST="$MINER2"
    PORT="$PORT2"
    pool
    ssh root@"$MINER2" -p "$PORT2" 'mine restart'
  elif [ "$miner" = '3' ]; then
    HOST="$MINER3"
    PORT="$PORT3"
    pool
    ssh root@"$MINER3" -p "$PORT3" 'mine restart'
  fi
elif [ "$miner" = 'all' ] || [ "$miner" = '' ]; then
    HOST="$MINER1"
    PORT="$PORT1"
    pool
    ssh root@"$MINER1" -p "$PORT1" 'mine restart'
    unset HOST
    unset PORT
    HOST="$MINER2"
    PORT="$PORT2"
    pool
    ssh root@"$MINER2" -p "$PORT2" 'mine restart'
    unset HOST
    unset PORT
    HOST="$MINER3"
    PORT="$PORT3"
    pool
    ssh root@"$MINER3" -p "$PORT3" 'mine restart'    
fi
}

status() {
echo ""
echo "-----------------MINER IP:$MINER1"	
ssh root@"$MINER1" -p "$PORT1" '/opt/bamt/viewgpu'
echo "" 	
echo "-----------------MINER IP:$MINER2"
ssh root@"$MINER2" -p "$PORT2" '/opt/bamt/viewgpu'
echo ""
echo "-----------------MINER IP:$MINER3"
ssh root@"$MINER3" -p "$PORT3" '/opt/bamt/viewgpu'
echo ""
}




cron() {
cat <<'EOF' | ssh root@$HOST -p $PORT 'cat - > /etc/bamt/cardcheck.sh && chmod +x /etc/bamt/cardcheck.sh && /etc/bamt/cardcheck.sh'
targetMinTemp=50
i=0
(/opt/bamt/viewgpu | awk '{ print $2; }' | cut -c -2 > /tmp/viewgpu)
sleep 5
array=(`cat /tmp/viewgpu`)
if [ ${#array[@]} -eq 0 ]; then
  echo "`date +%m-%d-%Y` `uptime | awk -F, '{sub(".*ge ",x,$1);print $1}'` viewgpu command failed to run, rebooting" >>  /etc/bamt/autoRebooter.log
  /sbin/coldreboot &
  sleep 30
  echo s > /proc/sysrq-trigger
  sleep 10
  echo b > /proc/sysrq-trigger
elif [ ${#array[@]} -ne 0 ]; then
   INTERFACE=`cat /proc/net/arp | grep -m 1 -v Device | awk '{print $6}'`
   echo "----------------MINER IP:`/sbin/ifconfig $INTERFACE | grep 'inet addr:' | cut -d: -f2 | cut -d' ' -f1 | tr -d '[:blank:]'`"
   echo "`/opt/bamt/viewgpu`"
   echo ""
fi
for temp in ${array[@]}; do
  if [ $temp -lt $targetMinTemp ]; then
    echo "`date +%m-%d-%Y` `uptime | awk -F, '{sub(".*ge ",x,$1);print $1}'` card number $i has stopped, its current temp is $temp, coldrebooting" >> /etc/bamt/autoRebooter.log
    /sbin/coldreboot &
    sleep 30
    echo s > /proc/sysrq-trigger
    sleep 10
    echo b > /proc/sysrq-trigger
  fi
i=$(($i+1))
done
EOF

}

cronhost() {
HOST="$MINER1"
PORT="$PORT1"
cron
unset PORT
unset HOST
HOST="$MINER2"
PORT="$PORT2"
cron
unset HOST
unset PORT
HOST="$MINER3"
PORT="$PORT3"
cron	
}

viewpool() {
echo -n "1. Specify miner: [1/2/3] "
read miner
if [ "$miner" = '1' ] || [ "$miner" = '2' ] || [ "$miner" = '3' ]; then
  if [ "$miner" = '1' ]; then
    ssh root@"$MINER1" -p "$PORT1" 'cat /etc/bamt/cgminer.conf'	
  elif [ "$miner" = '2' ]; then
    ssh root@"$MINER2" -p "$PORT2" 'cat /etc/bamt/cgminer.conf'
  elif [ "$miner" = '3' ]; then
    ssh root@"$MINER3" -p "$PORT3" 'cat /etc/bamt/cgminer.conf'
  fi
fi     	
}

case "$1" in
        config)
                config
                ;;
        viewpool)
                viewpool                                                  
                ;;
         status)
                status
                 ;;       
           cron)
                 cronhost
                 ;;
           *)
                echo "Usage: `basename $0` (config|status|viewpool|cron)"
                exit 1
                ;;
esac

 

 

 

Красавцы

Давайте дальше развивать идею

Ссылка на комментарий
Поделиться на другие сайты

-Добавил ребут выбранного майнера или всех сразу. Сначала проверяются живые, потом делается выбор, чтобы не сделать ошибку. Если все сразу в ребут, еще дополнительно запрашивает подтверждение.


 

 

#!/bin/bash
# author: demontager
#

MINER1="192.168.1.101"
PORT1="225"
##
MINER2="192.168.1.103"
PORT2="226"
##
MINER3="192.168.1.105"
PORT3="222"
#########################POOL CONFIG####################################
pool() {
cat <<'EOF' | ssh root@$HOST -p $PORT 'cat - > /tmp/pool.tmp && sed -n "/]/{:a;n;/}/b;p;ba}" /etc/bamt/cgminer.conf > /tmp/cgminer.conf.tmp \
&& cat /tmp/pool.tmp /tmp/cgminer.conf.tmp > /etc/bamt/cgminer.conf && echo "}" >> /etc/bamt/cgminer.conf \
&& rm /tmp/pool.tmp /tmp/cgminer.conf.tmp'
{
"pools" : [
{
"url" : "stratum+tcp://server.com:3333",
"user" : "User",
"pass" : "x"
},

{
"url" : "stratum+tcp://server1.com:3333",
"user" : "User",
"pass" : "x"

}
]
EOF
}
#############################END########################################

config() {
echo -n "1. Specify miner: [1/2/3] (default:all) "
read miner
if [ "$miner" = '1' ] || [ "$miner" = '2' ] || [ "$miner" = '3' ]; then
if [ "$miner" = '1' ]; then
HOST="$MINER1"
PORT="$PORT1"
pool
ssh root@"$MINER1" -p "$PORT1" 'mine restart'
elif [ "$miner" = '2' ]; then
HOST="$MINER2"
PORT="$PORT2"
pool
ssh root@"$MINER2" -p "$PORT2" 'mine restart'
elif [ "$miner" = '3' ]; then
HOST="$MINER3"
PORT="$PORT3"
pool
ssh root@"$MINER3" -p "$PORT3" 'mine restart'
fi
elif [ "$miner" = 'all' ] || [ "$miner" = '' ]; then
HOST="$MINER1"
PORT="$PORT1"
pool
ssh root@"$MINER1" -p "$PORT1" 'mine restart'
unset HOST
unset PORT
HOST="$MINER2"
PORT="$PORT2"
pool
ssh root@"$MINER2" -p "$PORT2" 'mine restart'
unset HOST
unset PORT
HOST="$MINER3"
PORT="$PORT3"
pool
ssh root@"$MINER3" -p "$PORT3" 'mine restart'
fi
}

status() {
echo ""
echo "| 1 |______________MINER IP:$MINER1"
ssh root@"$MINER1" -p "$PORT1" '/opt/bamt/viewgpu'
echo ""
echo "| 2 |______________MINER IP:$MINER2"
ssh root@"$MINER2" -p "$PORT2" '/opt/bamt/viewgpu'
echo ""
echo "| 3 |______________MINER IP:$MINER3"
ssh root@"$MINER3" -p "$PORT3" '/opt/bamt/viewgpu'
echo ""
}




cron() {
cat <<'EOF' | ssh root@$HOST -p $PORT 'cat - > /etc/bamt/cardcheck.sh && chmod +x /etc/bamt/cardcheck.sh && /etc/bamt/cardcheck.sh'
targetMinTemp=50
i=0
(/opt/bamt/viewgpu | awk '{ print $2; }' | cut -c -2 > /tmp/viewgpu)
sleep 5
array=(`cat /tmp/viewgpu`)
if [ ${#array[@]} -eq 0 ]; then
echo "`date +%m-%d-%Y` `uptime | awk -F, '{sub(".*ge ",x,$1);print $1}'` viewgpu command failed to run, rebooting" >> /etc/bamt/autoRebooter.log
/sbin/coldreboot &
sleep 30
echo s > /proc/sysrq-trigger
sleep 10
echo b > /proc/sysrq-trigger
elif [ ${#array[@]} -ne 0 ]; then
INTERFACE=`cat /proc/net/arp | grep -m 1 -v Device | awk '{print $6}'`
echo "----------------MINER IP:`/sbin/ifconfig $INTERFACE | grep 'inet addr:' | cut -d: -f2 | cut -d' ' -f1 | tr -d '[:blank:]'`"
echo "`/opt/bamt/viewgpu`"
echo ""
fi
for temp in ${array[@]}; do
if [ $temp -lt $targetMinTemp ]; then
echo "`date +%m-%d-%Y` `uptime | awk -F, '{sub(".*ge ",x,$1);print $1}'` card number $i has stopped, its current temp is $temp, coldrebooting" >> /etc/bamt/autoRebooter.log
/sbin/coldreboot &
sleep 30
echo s > /proc/sysrq-trigger
sleep 10
echo b > /proc/sysrq-trigger
fi
i=$(($i+1))
done
EOF

}

cronhost() {
HOST="$MINER1"
PORT="$PORT1"
cron
unset PORT
unset HOST
HOST="$MINER2"
PORT="$PORT2"
cron
unset HOST
unset PORT
HOST="$MINER3"
PORT="$PORT3"
cron
}

viewpool() {
echo -n "1. Specify miner: [1/2/3] "
read miner
if [ "$miner" = '1' ] || [ "$miner" = '2' ] || [ "$miner" = '3' ]; then
if [ "$miner" = '1' ]; then
ssh root@"$MINER1" -p "$PORT1" 'cat /etc/bamt/cgminer.conf'
elif [ "$miner" = '2' ]; then
ssh root@"$MINER2" -p "$PORT2" 'cat /etc/bamt/cgminer.conf'
elif [ "$miner" = '3' ]; then
ssh root@"$MINER3" -p "$PORT3" 'cat /etc/bamt/cgminer.conf'
fi
fi
}

reboot() {
echo -n "Probing for alive miners..."
sleep 2
echo ""
status
echo -n "Enter selected miner to reboot (1/2/3/all) "
read miner
if [ "$miner" = '1' ] || [ "$miner" = '2' ] || [ "$miner" = '3' ]; then
if [ "$miner" = '1' ]; then
ssh root@"$MINER1" -p "$PORT1" '/sbin/coldreboot'
elif [ "$miner" = '2' ]; then
ssh root@"$MINER2" -p "$PORT2" '/sbin/coldreboot'
elif [ "$miner" = '3' ]; then
ssh root@"$MINER3" -p "$PORT3" '/sbin/coldreboot'
elif [ "$miner" = 'all' ] || [ "$miner" = '' ]; then
echo -n "Are sure to reboot all miners ? (y/n) "
read choice
if [ "$choice" = 'y' ]; then
ssh root@"$MINER1" -p "$PORT1" '/sbin/coldreboot'
ssh root@"$MINER2" -p "$PORT2" '/sbin/coldreboot'
ssh root@"$MINER3" -p "$PORT3" '/sbin/coldreboot'
else
echo -n "Miners not rebooted"
exit 0
fi
fi
else
echo -n "Miner not valid"
echo ""
exit 1
fi
}
msg() {
echo "Mass mining control, check and status view"
echo ""
echo "Usage: `basename $0` <config|viewpool|status|cron>"
cat <<EOF

Options:
config[#] :change single miner config or all
viewpool[#] :view single miner config - cgminer.conf
status :check miners temps and connected pools
cron :check if miners do actual mining, if idle/hung do coldreboot
reboot :reboot selected miner or all

Tip: It is possible to put script in crontab to do miners probe.
EOF
}

case "$1" in
config)
config
;;
viewpool)
viewpool
;;
status)
status
;;
cron)
cronhost
;;
reboot)
reboot
;;
*)
msg
exit 1
;;
esac


 

 

Ссылка на комментарий
Поделиться на другие сайты

можешь прикрутить данный функционал допустим к тому же анубису или phpminer ?

Ссылка на комментарий
Поделиться на другие сайты

Все можно, только там на php уже придется делать.  Честно говоря необходимости для себя делать подобное в том же phpminer не вижу.  Моя цель - это максимально упростить контроль ферм в терминале, без GUI/вебинтерфейса.

В планах что хочу сделать еще:

-добавить автоконтроль температур, если выше какого-то значения, уменьшать интенсивность майнинга.

-информирование о обрыве связи с пулом/смене пула/отваливания карты от майна

-интерактивное меню выбора функций

-конфиг для conky для вывода инфы на рабочем столе Linux

Изменено пользователем Demontager
Ссылка на комментарий
Поделиться на другие сайты

еще бы прикрутить авторебут через модуль Jerome и будет шоколад вообще ))))

Ссылка на комментарий
Поделиться на другие сайты

Лучше бы сделать приблуду/скриптик/что_угодно_другое, что бы в нужный COM (например, /dev/tty_USBX) засылала определённую команду (без разницы) при загрузке (для запуска watch-dog'а), а затем раз в N секунд другую команду/символ, сигнализирующий, что всё нормально. Если команда не пришла N * X секунд (где X = 5...10, что бы уж наверняка), то беда... Замыкаем RESET, ждём команду на очередной запуск Watch-dog'а.

А то хотел запилить вотч-дог на микроконтроллере, но на "комповой" стороне вышел затык...

Ссылка на комментарий
Поделиться на другие сайты

У этой штуки есть как минимум 2 минуса:

1. неизвестно, не будут ли риги время от времени "донатить";

2. оно, можно сказать, не работает под линухом, т.к. в BAMT нет поддержки Mono (да и сомнительно, что оно вообще разрабатывалось с поддержкой Mono, а тонкости совместимости есть), а заморачиваться с полным дистрибутивом - особого смысла не имеет.

Ссылка на комментарий
Поделиться на другие сайты

Почти полностью переписал начальный скрипт с добавлением нескольких новых функций. Проверил работоспособность на Lubuntu 13.10, будет работать на всех Debian based и др. Linux, только если не Debian, тогда нужно чуть отредактировать скрипт. Могу сделать конечно, но пока не требуется.

Желательно установить BAMT 1.6, так как именно под него писал функцию смены cgminer/sgminer/vertminer. Но будет работать все остальное и на BAMT 1.3 без этой функции.

 

Список изменений

 

-Теперь скрипт работает в интрерактивном режиме

-Можно добавить неограниченое количество майнеров, (было 3)

-Автоматически делается авторизация к майнерам без пароля

-Можно задать свои цвета для сообщений, менюшек

-Добавлена возможность переключения cgminer/sgminer на сервере + можно переключать на свой кастомный.

-Добавлен мониторинг серверов в live режиме (см. скрин)

-По прежнему скрипт можно запустить через cron, но с параметром (см. пункт 7)

 

Начальная настройка:

 

1. Скачать скрипт в любую директорию

2. Дать права на исполнение chmod +x mine.sh

3. Отредактировань в скрипте свои значеия  ip серверов и майнинг пулов

4. Запустить ./mine.sh

5. При первом запуске необходимо настроить беспарольную авторизацию, нажать 7 и проследовать инструкциям на экране

6. Вернуться в стартовое меню и выбрать нужное действие

7. (Опционально) Если нужна функция автоматической проверки работоспособности майнеров через cron, тогда скрипт нужно запустить с параметром cron, т.е. если к примеру необходимо каждые 20 минут проверять, тогда добавляем в crontab такую строку

*/20 * * * * /mine.sh cron

 

 

 

 

Скачать скрипт

 

Github, все последующие изменения в коде буду постить туда https://github.com/Demontager/minessh

 

UPD. Поправил меню для ребута и пулов. Прямую ссылку c файлообменника убрал, самая обновленная версия скрипта только на Github

post-13621-0-74494100-1395590133_thumb.png

post-13621-0-37772800-1395590201_thumb.png

post-13621-0-82899600-1395590309_thumb.png

Изменено пользователем Demontager
Ссылка на комментарий
Поделиться на другие сайты

Круто! А на SMOS работать будет?

Изменено пользователем ga6iem
Ссылка на комментарий
Поделиться на другие сайты

#22 icon_share.png Demontager

небольшая поправка по 4 пункту (Запустить ./mine.sh) лучше будет (болие явно для bash)  sh '/your_path/mine.sh' а то в некоторых линуксах (лайвовых) ./*.sh криво работает по крайненей мере я с таким сталкивался

Изменено пользователем ЯzzzЪ
Ссылка на комментарий
Поделиться на другие сайты

Круто! А на SMOS работать будет?

Будет, только функция смены майнеров не отработает. Или можно положить скомпилированные в папку /opt/miners. А лучше просто скопировать с BAMT 1.6, если уже SMOS 1.3/BAMT 1.3 явлется принципиальным.

ЯzzzЪ, не припоминаю где так криво работает. На 99% Linux как я написал, будет работать.

 

Кто-то пользуется реально скриптом ? Если да, то напишу еще как добавить свой кастомный майнер.  Пока получилил 2 предложения по расширению фунций:

1. Добавить возможность следить за состоянием карт sick/dead.  Но скрипт вообщем и так отработает, так как если какая-то из карт станет sick/dead, со вренем ее температура упадет ниже установленного лимита 52 град и тогда отправится два сигнала на перезагрузку компьютера coldreboot и если не отработает, тогда еще echo s > /proc/sysrq-trigger и echo b > /proc/sysrq-trigger

 

 

2. Добавить мониторинг в реальном времени для короткой статистики майнеров (пункт 1 меню).  Будет полезно у кого более 5 майнеров, должно компактней занимать площадь одного экрана. Если уже очень много 10 и выше, тогда можно пускать несколько копий скрипта, только в каждой копии прописывать необходимые майнеры.

 

От себя хочу сделать еще возможность быстро логится по ssh и вручную править конфиги.

Изменено пользователем Demontager
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Similar Topics

    • allminer.ru, мониторинг ферм Allminer

      Здравствуйте.   Хотим представить Вам сервис для мониторинга ферм.   Внимание! С 1 Апреля 2018 года сервис https://allminer.ru    переходит на платную основу 0-2 Рига - Бесплатно 3-50 Рига - 50р в месяц с рига или 1.65 в день 50+ 40р в месяц с рига или 1.35 в день   Гостевой период для новых пользователей - 2 недели на сто ригов.     Поддержка ASIC: AntMiner S9 beta   Поддержка GPU: AMD - 460,

      в Мониторинг

    • Укравший средства клиентов KyberSwap потребовал передать ему полный контроль над площадкой

      Неизвестный, ответственный за кражу криптоактивов площадки KyberSwap, обнародовал 30 ноября условия возврата средств. Требования хакера включают в себя передачу всех инструментов исполнительного контроля над управляющей компанией Kyber. А именно: полные полномочия и владение механизмом управления KyberDAO, переоформление юридических документов, а также доступ к банковским счетам и ценным бумагам.   В сообщении хакера говорится, что Kyber должна исполнить требования не позднее 10 дек

      в Новости криптовалют

    • Chainalysis: США теряют контроль над рынком стейблкоинов

      Аналитики сервиса Chainalysis утверждают, что власти США теряют рычаги контроля над рынком стейблкоинов, поскольку все большее количество операций совершается через криптокомпании, не имеющие лицензии в Штатах. С июля 2022 по июнь 2023 года операции со стейблкоинами проходили через счета инкорпорированных на территории США компаний, а в общей массе составляя около половины всех внутрисетевых транзакций.      Однако уже с июня около 55% от исторического объема операций в стабиль

      в Новости криптовалют

    • New York Times: Власти США обеспокоены угрозой безопасности из-за китайских майнинговых ферм

      Издание New York Times со ссылкой на анонимные источники в американском правительстве сообщило, что власти США озабочены размещением некоторых китайских майнинговых ферм в стране. Сейчас китайские майнинговые компании представлены в 12 штатах в США, особенно много их в Техасе. Однако больше всего беспокойства у властей вызывает площадка Bit Origin в штате Вайоминг ― она расположена рядом с дата-центром компании Microsoft, который обрабатывает данные Пентагона. Недалеко также находится военн

      в Новости криптовалют

    • DonAlt: «Медведи снова взяли контроль над рынком»

      Популярный криптовалютный аналитик под псевдонимом DonAlt считает, что на рынке снова установился медвежий тренд и именно продавцы биткоина теперь играют главенствующую роль. В новом видео на YouTube аналитик заявил, что падение биткоина к $26 000 точно говорит о том, что «медведи снова управляют рынком».   «С трейдинговой перспективы смотрю на график и вижу: биткоин полностью слил весь свой рост от новостей по заявке BlackRock на спотовый ETF. Есть причина, по которой я советовал от

      в Новости криптовалют


×
×
  • Создать...