Перейти к содержимому

moneymaker's блог

  • записей
    16
  • комментариев
    168
  • просмотра
    63 152

Автоматизируем перезапуск 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="mymail@somemail.ru"

subj="eth_restarter"

user="noreply@mydomain.ru"

from="noreply@mydomain.ru"

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 не выкладываю, думаю все разберутся сами. Если у кого-то возникнут проблемы, обращайтесь подскажу.

 

Всем удачи!



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


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

Добрый день.

Аналогичная ошибка что и в посте выше пользователя a2b

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


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

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

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


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

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

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


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

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

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

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


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

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

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

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

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


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

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

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

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

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


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

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

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

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

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


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

Пожалуйста, рад помочь сообществу.

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


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

Для чего используете скрипт?

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


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

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

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

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


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

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

×