Перейти к публикации

moneymaker's блог

  • записей
    19
  • комментариев
    211
  • просмотров
    65 618

Автоматизируем перезапуск ethminer eth-proxy

У майнеров эфира на Дварф пуле периодически возникает проблема реджектов из-за глюков рекомендуемого прокси. Самый простой вариант - перезапуск прокси и майнера. Попытки производить стандартными средствами Windows через bat-файл не принесли положительного результата, видимо taskkill работает слишком жестоко для нежного прокси)))

:Rsstart D:\Mng\Etherium\eth-proxy\eth-proxy.exetimeout /t 3start D:\Mng\Etherium\eth_miner\ethminer -F http://127.0.0.1:8080/R290 -G --opencl-device 1 --opencl-platform 1  --farm-recheck 200timeout 3600taskkill.exe /f /im "ethminer.exe" /Ttimeout 2taskkill.exe /f /im "eth-proxy.exe" /Ttimeout 2goto :Rsexit 

Предлагаю другой способ автоматизации этой нехитрой процедуры - пишем небольшой скрипт на Autohotkey.

Протестировано на Win7x64, AHK 111604. Для отправки email используем утилиту mailsend.

 

Все достаточно просто:

 

1. Качаем

По ссылке AHK:https://www.autohotkey.com/

По ссылке mailsend: https://github.com/muquit/mailsend/

 

2. Создаем

EtheriumRestart.ini с указанием путей к майнеру, прокси, строкой запуска майнера, период рестарта в минутах и учетные данные для отправки почты с уведомлением о произведенном перезапуске.

 

[paths]

path2miner="D:\Mng\Etherium\eth_miner\ethminer.exe"

path2proxy="D:\Mng\Etherium\eth-proxy\eth-proxy.exe"

path2emailer="D:\Mng\Etherium\mailsend.exe "

[additionalParams]

minerParams=" -F http://127.0.0.1:8080/R290 -G --opencl-device 1 --opencl-platform 1 --farm-recheck 200"

restartTimer=10

[emailParams]

eMail="[email protected]"

subj="eth_restarter"

user="[email protected]"

from="[email protected]"

pass="mypass"

server="smtp.mydomain.ru"

Port="587"

 

3. Создаем EtheriumRestart.ahk - файл скрипта, в который помещаем следующий код:

Global path2miner =""Global path2proxy = ""Global path2emailer = ""Global eMail=""Global subj=""Global user=""Global from=""Global pass=""Global server=""Global port=""Global emailFlag = 0		FileDelete, %A_ScriptDir%/EtheriumRestart.log		FileAppend, %A_YYYY%%A_MM%%A_DD%_%A_Hour%:%A_Min%:%A_Sec% Start EtheriumRestart program ... Success`n, %A_ScriptDir%/EtheriumRestart.log		IniRead,  path2miner, %A_ScriptDir%\EtheriumRestart.ini, paths, path2miner	 	IniRead, path2proxy, %A_ScriptDir%\EtheriumRestart.ini, paths, path2proxy		IniRead, minerParams, %A_ScriptDir%\EtheriumRestart.ini, additionalParams, minerParams		IniRead, restartTimer, %A_ScriptDir%\EtheriumRestart.ini, additionalParams, restartTimer		IniRead, path2emailer, %A_ScriptDir%\EtheriumRestart.ini, paths, path2emailer		IniRead, eMail, %A_ScriptDir%\EtheriumRestart.ini, emailParams, email		IniRead, subj, %A_ScriptDir%\EtheriumRestart.ini, emailParams, subj		IniRead, user, %A_ScriptDir%\EtheriumRestart.ini, emailParams, user		IniRead, from, %A_ScriptDir%\EtheriumRestart.ini, emailParams, from		IniRead, pass, %A_ScriptDir%\EtheriumRestart.ini, emailParams, pass		IniRead, server, %A_ScriptDir%\EtheriumRestart.ini, emailParams, server		IniRead, Port, %A_ScriptDir%\EtheriumRestart.ini, emailParams, Port		Run, % path2proxy		Sleep, 3000		ifWinExist, %path2proxy%			FileAppend, %A_YYYY%%A_MM%%A_DD%_%A_Hour%:%A_Min%:%A_Sec% Run %path2proxy% ... Successfull`n, %A_ScriptDir%/EtheriumRestart.log				else					FileAppend, %A_YYYY%%A_MM%%A_DD%_%A_Hour%:%A_Min%:%A_Sec% Run %path2proxy% ... UNSUCCESSFULL`n, %A_ScriptDir%/EtheriumRestart.log		Run, % path2miner minerParams		Sleep, 1000		ifWinExist, %path2miner%			FileAppend, %A_YYYY%%A_MM%%A_DD%_%A_Hour%:%A_Min%:%A_Sec% Run %path2miner% %minerParams% ... Successfull`n, %A_ScriptDir%/EtheriumRestart.log				else					FileAppend, %A_YYYY%%A_MM%%A_DD%_%A_Hour%:%A_Min%:%A_Sec% Run %path2miner% %minerParams% ... UNSUCCESSFULL`n, %A_ScriptDir%/EtheriumRestart.log		if (eMail<>"" and subj<>"" and user<>"" and from<>"" and pass<>"" and server<>"" and Port<>"" and path2emailer<>"")			emailFlag := 1loop	{		Sleep, restartTimer*60000		WinClose, D:\Mng\Etherium\eth_miner\ethminer.exe		Sleep, 1000		ifWinNotExist, %path2miner%			FileAppend, %A_YYYY%%A_MM%%A_DD%_%A_Hour%:%A_Min%:%A_Sec% Ethminer was closed ... Successfull`n, %A_ScriptDir%/EtheriumRestart.log				else					FileAppend, %A_YYYY%%A_MM%%A_DD%_%A_Hour%:%A_Min%:%A_Sec% Ethminer was NOT closed ... UNSUCCESSFULL`n, %A_ScriptDir%/EtheriumRestart.log		WinClose, D:\Mng\Etherium\eth-proxy\eth-proxy.exe		Sleep, 2500		ifWinNotExist, %path2miner%			FileAppend, %A_YYYY%%A_MM%%A_DD%_%A_Hour%:%A_Min%:%A_Sec% Eth-proxy was closed ... Successfull`n, %A_ScriptDir%/EtheriumRestart.log				else					FileAppend, %A_YYYY%%A_MM%%A_DD%_%A_Hour%:%A_Min%:%A_Sec% Eth-proxy was NOT closed ... UNSUCCESSFULL`n, %A_ScriptDir%/EtheriumRestart.log		Sleep, 5000		IniRead,  path2miner, %A_ScriptDir%\EtheriumRestart.ini, paths, path2miner	 	IniRead, path2proxy, %A_ScriptDir%\EtheriumRestart.ini, paths, path2proxy		IniRead, restartTimer, %A_ScriptDir%\EtheriumRestart.ini, additionalParams, restartTimer		Run, % path2proxy		Sleep, 5000		Run, % path2miner minerParams		Sleep, 1500		ifWinExist, %path2miner%			ifWinExist, %path2proxy%				{					FileAppend, %A_YYYY%%A_MM%%A_DD%_%A_Hour%:%A_Min%:%A_Sec% Restart cycle... Success`n, %A_ScriptDir%/EtheriumRestart.log					if emailFlag						fnc_sendEmailMessage("Restart cycle... Success")				}					else						{							FileAppend, %A_YYYY%%A_MM%%A_DD%_%A_Hour%:%A_Min%:%A_Sec% Restart cycle... Cannot start miner or proxy.... UNSUCCESSFULL`n, %A_ScriptDir%/EtheriumRestart.log							if emailFlag								fnc_sendEmailMessage("Restart cycle... UNSUCCESSFULL")													}	}returnfnc_sendEmailMessage(messageText)	{		IniRead, path2emailer, %A_ScriptDir%\EtheriumRestart.ini, paths, path2emailer		MailSend_String = -to %eMail% -from %from% -smtp %server% -port %Port% -sub %subj% +cc +bcc -v -auth-login -user %user% -pass %pass% -M "%messageText% %A_YYYY%%A_MM%%A_DD%_%A_Hour%:%A_Min%:%A_Sec%"		Run, % path2emailer MailSend_String		Sleep, 1000	}

4. Помещаем в одну папку наш ini-файл с настройками и .ahk файл со скриптом, проверяем пути к майнеру, прокси и отправщику почты

Если не хотим отправлять почту, в ini-файле оставляем в секции emailParams значения "" - пустые.

5. Запускаем наш .ahk файл, скрипт начинает выполняться, рядом с ним появится EtheriumRestart.log, думаю название говорит само за себя - незамысловатые логи работы скрипта.

 

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

 

Всем удачи!



17 комментариев


Рекомендованные комментарии

мой .ini

 

[paths]
path2miner=C:\Program Files\Ethereum 0.9.41\Release\ethminer.exe
path2proxy=C:\Program Files\Ethereum 0.9.41\Release\mining_proxy.exe
 
[additionalParams]
minerParams=" --farm-recheck 200 -G -F http://127.0.0.1:8332/a2b.1:pass --cl-local-work 128 --cl-global-work 16384"
restartTimer=10
[emailParams]
eMail=""
subj=""
user=""
from=""
pass=""
server=""
Port=""

при запуске .ahk выдаёт следующее ((

8feedfa11aec.jpg

что сделать ?

Поделиться комментарием


Ссылка на комментарий

Навскидку у предыдущего юзера в ini файле неправильный синтаксис строк - нет двойных кавычек у строки с путями.

Поделиться комментарием


Ссылка на комментарий

Я тоже таким батником пробовал сделать ротацию, прокси зависал напрочь, поэтому пришлось делать скрипт, который более корректно завершал процессы. Скрипт был допилен под одного форумчанина и, насколько я знаю, успешно работает.

Поделиться комментарием


Ссылка на комментарий

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

Сейчас необходимость в скрипте не такая острая, т.к. разработчик выпустил новую версию прокси в которой эта проблема пофиксена. Но есть сценарий применения в случае поочередного майнинга на разные пулы/кошельки. 

Поделиться комментарием


Ссылка на комментарий

После изучения и решения проблем, может поможет, такому же профану как я, чтобы не ковырялся до 2 часов ночи:
1) После копирования и вставки записи всего кода, в тексте типа
"path2proxy        IniRead,", надо чтобы везде, где много пробелов, все слова начинались с новой строки после пробелов.
2) Чтобы после выполнения команды скрипт не заканчивался, найти в тексте команду "Loop"  или как в тексте "loop", и поставить с новой строку.
 
moneymaker и a2b -- спасибо за ответы.
 

И еще moneymaker, при выполнении скрипта пишет, что команды как --fnc_sendEmailMessage  -- нет, я искал в мануале, есть только команда -- sendMessage --.

Для выполнения скрипта, удалил часть с данной командой.

Поделиться комментарием


Ссылка на комментарий

И еще moneymaker, при выполнении скрипта пишет, что команды как --fnc_sendEmailMessage  -- нет, я искал в мануале, есть только команда -- sendMessage --.

Для выполнения скрипта, удалил часть с данной командой.

Это была самописная функция отправки email сообщений, можете ее удалить))

Поделиться комментарием


Ссылка на комментарий

Это была самописная функция отправки email сообщений, можете ее удалить))

Ясно)) я так и сделал.

За скрипт Огромное спасибо, все работает.

Поделиться комментарием


Ссылка на комментарий

Пытаюсь применить по прямому назначению: перезапуск прокси и майнера 

Помогло, скинутое?

Поделиться комментарием


Ссылка на комментарий
Пытаюсь применить по прямому назначению: перезапуск прокси и майнера

Я вам помогу, но попозже, сейчас очень занят.

Поделиться комментарием


Ссылка на комментарий

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×