git.iko.soy/xmrig-bash-scripts
on master help sign in
Merge branch 'release/v1.0.7'
commitedc6f8dfdd45efe91e84c33b1bbadd2ae991feb5 authorSean Wheller <sean@prepaidmeters.com> dateSun 11 Aug 2019, 16:45 (7 years ago) parentfb5f3cc8f2c70d
14 files changed+120−51
README.md+18−17 build.sh+3−1 config.sh+3−1 crontab-off.sh+3−1 crontab-on.sh+3−1 crontab.sh+4−1 depends.sh+3−1 functions.sh+26−4 input.sh+23−10 install.sh+14−1 maintenance.sh+3−1 settings.sh+6−10 start.sh+8−1 stop.sh+3−1
README.md+18−17
@@ -11,6 +11,7 @@ A set of convenience scripts, written in bash, to help manage installation, conf
1111There is allot to install so the install script will do most of the heavy lifting.
1212At the start the expectation is that you have:
1313* Computer running Ubuntu 18.04 (LTS)
14+* Bash shell
1415* User account with sudo privileges
1516* Installed git
1617* Optionally installed [xmrig-proxy](https://github.com/xmrig/xmrig-proxy)
@@ -21,38 +22,37 @@ Some knowledge of:
2122* Linux Command Line Interface
2223* Linux shell `bash`
2324
24−There is more to install but the install script will install the rest.
25−
2625### Installation
2726
28271. Change to your user home directory.
2928 `cd ~`
30−
31−2. Install git.
29+1. Install git.
3230 `sudo apt install git`
33−
34−3. Clone this project.
31+1. Clone this project.
3532 `git clone https://github.com/seanwhe/xmrig-bash-scripts`
36−
37−4. Change into the cloned directory.
33+1. Change into the cloned directory.
3834 `cd xmrig-bash-scripts`
39−
40−5. Edit the settings file to your preference.
41− `vim settings.sh`
42−
43−6. Run the install script
35+1. Run the install script
4436 `./install.sh`
45−
46−7. After install is complete. Attach to the screen session created during the installation.
37+1. When prompted: "Enter your own settings?" enter 'y'es.
38+1. Enter values for your:
39+ 1. Pool server URL
40+ 1. Pool server TCP port
41+ 1. Receive wallet address
42+ 1. Email address
43+ 1. Miner identifier name
44+1. After install is complete. Attach to the screen session created during the installation.
4745 `screen -r`
4846
4947### Operation
5048
5149Defaults - The settings.sh contains a number of variables. With the exception of the 'xmrig' binary, which is installed to `/usr/bin/xmrig`, all files remain in the cloned project directory `~/xmrig-bash-scripts`. Any files generated while running the scripts are also created in this directory.
5250
53−During install the folder source for [xmrig cpu](https://github.com/xmrig/xmrig) is cloned to `~/xmrig-bash-scripts/xmrig-cpu/`. The `config.json` is also created in this path.
51+During install the folder source for [xmrig cpu](https://github.com/xmrig/xmrig) is cloned to `~/xmrig-bash-scripts/xmrig-cpu/`. The file `config.json`, used to configure xmrig, is also created in this path and is passed to xmrig at startup.
52+
53+During installation it is recomended to enter your own settings. This creates a file named 'mysettings.sh' which will not be overwritten during future installs or upgrades. Values for variables found in 'mysettings.sh' are used to create 'config.json'.
5454
55−This should work out the box, if you edit only the top section of `settings.sh` and followed the steps here.
55+This should work out the box, if you follow the installation steps and enter your own values for 'mysettings.sh.
5656
5757Once you have a running xmrig then you can start playing around and tweaking to suite requirements.
5858
@@ -67,6 +67,7 @@ The scripts are designed to be modular to promote resuse, execute exclusion and
6767* crontab-on.sh - redefines the users crontab as created during install.
6868* depends.sh - installs dependancies required by xmrig and these scripts.
6969* functions.sh - a collection of functions used in various of the scripts.
70+* input.sh - prompts to enter values for creating 'mysettings.sh'
7071* install.sh - the main entry point when first installing.
7172* maintenance.sh - performs apt update, upgrade, autoremove and autoclean operations.
7273* settings.sh - contains variables used by these scripts.
build.sh+3−1
@@ -1,5 +1,7 @@
11#!/bin/bash
22
3+echo "${_GREEN}BUILD STARTED${_RESET}"
4+
35# Clone source
46if [ -d "$_XMRIG_CLONE_LOCATION" ]; then
57
@@ -45,5 +47,5 @@ sudo cp $_XMRIG_BUILD_LOCATION/xmrig $_XMRIG_TARGET_LOCATION
4547
4648cd $_WORK_DIR
4749
48−echo "${_GREEN}BUILD COMPLETE${_RESET}"
50+echo "${_CYAN}BUILD STOPPED${_RESET}"
4951
config.sh+3−1
@@ -1,6 +1,8 @@
11#!/bin/bash
22
3+echo "${_GREEN}CONFIG STARTED${_RESET}"
4+
35echo "$_CONFIG_JSON" | tee config.json
46
5−echo "${_GREEN}CONFIG CREATED${_RESET}"
7+echo "${_CYAN}CONFIG STOPPED${_RESET}"
68
crontab-off.sh+3−1
@@ -1,5 +1,7 @@
11#!/bin/bash
22
3+echo "${_GREEN}DISABLE CRONTAB STARTED${_RESET}"
4+
35# Removes a user crontab
46# Used in conjunction with crontab-on.sh to toggle user crontab between states:
57# on - start/stop xmrig at specified times
@@ -12,5 +14,5 @@ crontab -l > crontab
1214echo "Removing exiting crontab"
1315crontab -r
1416
15−echo "${_GREEN}CRONTAB DISABLED${_RESET}"
17+echo "${_CYAN}DISABLE CRONTAB STOPPED${_RESET}"
1618
crontab-on.sh+3−1
@@ -1,5 +1,7 @@
11#!/bin/bash
22
3+echo "${_GREEN}ENABLE CRONTAB STARTED${_RESET}"
4+
35# Defines a user crontab with schedules as defined in settings.sh
46# Used in conjunction with crontab-off.sh to toggle user crontab between states:
57# on - start/stop xmrig at specified times
@@ -14,5 +16,5 @@ sleep 5
1416. crontab.sh
1517sleep 5
1618
17−echo "${_GREEN}CRONTAB ENABLED${_RESET}"
19+echo "${_CYAN}ENABLE CRONTAB STOPPED${_RESET}"
1820
crontab.sh+4−1
@@ -1,5 +1,8 @@
11#!/bin/bash
22
3+
4+echo "${_GREEN}CRONTAB STARTED${_RESET}"
5+
36# Set values in settings script
47
58# Remove existing crontab
@@ -15,5 +18,5 @@ crontab -l | { cat; echo "#Start at $_USER_TIMESTART on days $_USER_CRONDAYS
1518crontab -l | { cat; echo "#Stop at $_USER_TIMESTOP on days $_USER_CRONDAYS
16190 $_USER_CRONSTOP * * $_USER_CRONDAYS screen -S $_XMRIG_SCREEN -X kill"; } | crontab -
1720
18−echo "${_GREEN}CRONTAB CREATED${_RESET}"
21+echo "${_CYAN}CRONTAB STOPPED${_RESET}"
1922
depends.sh+3−1
@@ -2,6 +2,8 @@
22
33# Install the software requirements
44
5+echo "${_GREEN}INSTALL DEPENDS STARTED${_RESET}"
6+
57if [ $_APT_DEPENDS = 1 ]; then
68
79 # Install xmrig depends
@@ -12,4 +14,4 @@ if [ $_APT_DEPENDS = 1 ]; then
1214
1315fi
1416
15−echo "${_GREEN}DEPENDENCIES INSTALLED${_RESET}"
17+echo "${_CYAN}INSTALL DEPENDS STOPPED${_RESET}"
functions.sh+26−4
@@ -1,5 +1,7 @@
11#!/bin/bash
22
3+echo -e "${_GREEN}LOADING FUNCTIONS${_RESET}"
4+
35function prompt_confirm() {
46 while true; do
57 read -r -n 1 -p "${1:-Continue?} [y/n]: " REPLY
@@ -11,10 +13,20 @@ function prompt_confirm() {
1113 done
1214}
1315
16+function show_settings () {
17+ echo "${_CYAN}Settings from loaded environment:${_RESET}"
18+ echo "${_GREEN}Pool URL:${_RESET}: $_POOL_SERVER_URL"
19+ echo "${_GREEN}Pool Port:${_RESET}: $_POOL_SERVER_PORT"
20+ echo "${_GREEN}Recieve Wallet:${_RESET}: $_RECEIVE_WALLET"
21+ echo "${_GREEN}Email Address:${_RESET}: $_EMAIL"
22+ echo "${_GREEN}Worker Identity:${_RESET}: $_API_WORKER_ID"
23+}
24+
1425function show_mysettings () {
15− if [ -f $_WORK_DIR/$_MYSETTINGS_FILE ]; then
16− . $_MYSETTINGS_FILE
17− echo "${_GREEN}Settings from loaded from mysettings.sh.${_RESET}"
26+ if [ -f $_WORK_DIR/$_MYSETTINGS_FILE ]; then
27+ load_mysettings
28+ echo "${_CYAN}Settings from mysettings.sh:${_RESET}"
29+ echo "${_CYAN}Settings loaded:${_RESET}"
1830 echo "${_GREEN}Pool URL:${_RESET}: $_POOL_SERVER_URL"
1931 echo "${_GREEN}Pool Port:${_RESET}: $_POOL_SERVER_PORT"
2032 echo "${_GREEN}Recieve Wallet:${_RESET}: $_RECEIVE_WALLET"
@@ -23,6 +35,16 @@ function show_mysettings () {
2335 fi
2436}
2537
38+function load_mysettings () {
39+ if [ -f $_WORK_DIR/$_MYSETTINGS_FILE ]; then
40+ . $_MYSETTINGS_FILE
41+ fi
42+}
43+
44+function my_config_json () {
45+ _CONFIG_JSON=$(jo -p -B api=$(jo id=$_API_ID worker-id=$_API_WORKER_ID) autosave=$_AUTOSAVE background=$_BACKGROUND colors=$_COLORS cpu=$(jo enabled=$_CPU_ENABLED huge-pages=$_CPU_HUGE_PAGES hw-aes=$_CPU_HW_AES priority=$_CPU_PRIORITY asm=$_CPU_ASM cn=$(jo -a $_CPU_CN) cn/0=$_CPU_CN_0 cn-lite/0=$_CPU_CN_LITE_0) donate-level=$_DONATE_LEVEL donate-over-proxy=$_DONATE_OVER_PROXY http=$(jo enabled=$_HTTP_ENABLED host=$_HTTP_HOST port=$_HTTP_PORT access-token=$_HTTP_ACCESS_TOKEN restricted=$_HTTP_RESTRICTED) logfile=$_LOGFILE pools=$(jo -a $(jo algo=$_POOLS_ALGO url=$_POOLS_URL user=$_POOLS_USER pass=$_POOLS_PASS rig-id=$_POOLS_RIG_ID nicehash=$_POOLS_NICEHASH keepalive=$_POOLS_KEEPALIVE enabled=$_POOLS_ENABLED tls=$_POOLS_TLS tls-fingerprint=$_POOLS_TLS_FINDERPRINT daemon=$_POOLS_DAEMON)) print-time=$_PRINT_TIME retries=$_RETRIES retry-pause=$_RETRIES_PAUSE syslog=$_SYSLOG user-agent=$_USER_AGENT watch=$_WATCH)
46+}
47+
2648function build_xmrig () {
2749 if [ -d $_XMRIG_BUILD_LOCATION ]; then
2850 # Remove existing build directory
@@ -103,4 +125,4 @@ function calc_hugepages () {
103125
104126}
105127
106−echo -e "${_GREEN}FUNCTIONS LOADED${_RESET}"
128+echo -e "${_CYAN}FUNCTIONS LOADED${_RESET}"
input.sh+23−10
@@ -2,23 +2,27 @@
22
33# Ask user questions
44# Capture input
5−. functions.sh
6−. settings.sh
5+# if setting already exist use existing
76
8−echo -e "${_YELLOW}Choose to use default settings or enter your own.\n"
9−
10−echo -e "Use defaults and values will be taken from 'settings.sh'."
11−echo -e "Enter your own and settings will persist to 'mysettings.sh'.\n"
12−
13−echo -e "Preference is given to settings in 'mysettings.sh'."
14−echo -e "When starting from 'start.sh' and 'mysettings.sh' exists it will be loaded instead of 'settings.sh'.${_RESET}\n"
7+echo -e "${_GREEN}USER SETTINGS STARTED${_RESET}"
158
169if [ -f $_WORK_DIR/$_MYSETTINGS_FILE ]; then
1710
1811 # Call function
19− show_mysettings
12+
13+ load_mysettings
14+
15+ my_config_json
2016
2117else
18+ echo -e " ${_YELLOW}Opt for default settings or enter your own.\n"
19+
20+ echo -e " No - 'config.json' created with values from 'settings.sh'."
21+ echo -e " Yes - 'config.json' created with values from 'mysettings.sh' (recomended).\n"
22+
23+ echo -e " When 'mysettings.sh' exists this prompt will be skipped at furture installation."
24+ echo -e " Own settings is recomended to avoid your settings being overidden in upgrades.${_RESET}\n"
25+
2226
2327 prompt_confirm "Enter your own settings?"
2428
@@ -54,7 +58,16 @@ else
5458 echo "_RECEIVE_WALLET=\"$_RECEIVE_WALLET\"" >> $_MYSETTINGS_FILE_LOCATION
5559 echo "_EMAIL=\"$_EMAIL\"" >> $_MYSETTINGS_FILE_LOCATION
5660 echo "_API_WORKER_ID=\"$_API_WORKER_ID\"" >> $_MYSETTINGS_FILE_LOCATION
61+ echo "_POOLS_URL=\"$_POOL_SERVER_URL:$_POOL_SERVER_PORT\"" >> $_MYSETTINGS_FILE_LOCATION
5762
5863 fi
64+
65+ # Call function
66+
67+ load_mysettings
68+
69+ my_config_json
5970
6071fi
72+
73+echo "${_CYAN}USER SETTINGS STOPPED${_RESET}"
install.sh+14−1
@@ -1,5 +1,17 @@
11#!/bin/bash
22
3+
4+# Colors
5+_CYAN=`tput setaf 1`
6+_GREEN=`tput setaf 2`
7+_YELLOW=`tput setaf 3`
8+_BLUE=`tput setaf 4`
9+_MAGENTA=`tput setaf 5`
10+_CYAN=`tput setaf 6`
11+_RESET=`tput sgr0`
12+
13+echo "${_GREEN}INSTALLATION STARTED${_RESET}"
14+
315_DEBUG=$1
416
517if $_DEBUG; then
@@ -18,6 +30,7 @@ fi
1830
1931# Load functions
2032. functions.sh
33+sleep 5
2134
2235# Get settings
2336. settings.sh
@@ -57,4 +70,4 @@ SCREEN=""
5770. start.sh
5871
5972
60−echo -e "${_GREEN}INSTALLATION COMPLETE${_RESET}"
73+echo -e "${_CYAN}INSTALLATION COMPLETED${_RESET}"
maintenance.sh+3−1
@@ -1,10 +1,12 @@
11#!/bin/bash
22
3+echo "${_GREEN}MAINTENANCE STARTED${_RESET}"
4+
35if [ $_APT_MAINETANCE = 1 ]; then
46
57 sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean
68
79fi
810
9−echo "${_GREEN}MAINTENANCE COMPLETE${_RESET}"
11+echo "${_CYAN}MAINTENANCE STOPPED${_RESET}"
1012
settings.sh+6−10
@@ -1,5 +1,7 @@
11#!/bin/bash
22
3+echo -e "${_GREEN}LOADING DEFAULT SETTINGS${_RESET}"
4+
35_EMAIL="miners@prepaidmeters.com"
46
57_RECEIVE_WALLET="854sqm2Cm4TB2XgPHWqSPSbnFAe3SMzdEDzZHpukQ8NHBPFropbnkFmEKiZPgwjMFC9PTjaFscR2UU6ZwFCqJzGMUiZVbTM"
@@ -7,6 +9,9 @@ _RECEIVE_WALLET="854sqm2Cm4TB2XgPHWqSPSbnFAe3SMzdEDzZHpukQ8NHBPFropbnkFmEKiZPgwj
79_POOL_SERVER_URL="pool.supportxmr.com"
810_POOL_SERVER_PORT="3333"
911
12+# Call function
13+show_settings
14+
1015#######################################################################
1116# DO NOT CHANGE AFTER THIS POINT UNLESS YOU KNOW WHAT YOU ARE DOING #
1217#######################################################################
@@ -71,8 +76,6 @@ _USER_AGENT="null"
7176
7277_WATCH="true"
7378
74−_CONFIG_JSON=$(jo -p -B api=$(jo id=$_API_ID worker-id=$_API_WORKER_ID) autosave=$_AUTOSAVE background=$_BACKGROUND colors=$_COLORS cpu=$(jo enabled=$_CPU_ENABLED huge-pages=$_CPU_HUGE_PAGES hw-aes=$_CPU_HW_AES priority=$_CPU_PRIORITY asm=$_CPU_ASM cn=$(jo -a $_CPU_CN) cn/0=$_CPU_CN_0 cn-lite/0=$_CPU_CN_LITE_0) donate-level=$_DONATE_LEVEL donate-over-proxy=$_DONATE_OVER_PROXY http=$(jo enabled=$_HTTP_ENABLED host=$_HTTP_HOST port=$_HTTP_PORT access-token=$_HTTP_ACCESS_TOKEN restricted=$_HTTP_RESTRICTED) logfile=$_LOGFILE pools=$(jo -a $(jo algo=$_POOLS_ALGO url=$_POOLS_URL user=$_POOLS_USER pass=$_POOLS_PASS rig-id=$_POOLS_RIG_ID nicehash=$_POOLS_NICEHASH keepalive=$_POOLS_KEEPALIVE enabled=$_POOLS_ENABLED tls=$_POOLS_TLS tls-fingerprint=$_POOLS_TLS_FINDERPRINT daemon=$_POOLS_DAEMON)) print-time=$_PRINT_TIME retries=$_RETRIES retry-pause=$_RETRIES_PAUSE syslog=$_SYSLOG user-agent=$_USER_AGENT watch=$_WATCH)
75−
7679# Set working directory
7780_WORK_DIR="$(pwd)"
7881cd $_WORK_DIR
@@ -126,13 +129,6 @@ _APT_MAINETANCE="1"
126129# 1 = yes 0 = no
127130_APT_DEPENDS="1"
128131
129−# Colors
130−_GREEN=`tput setaf 2`
131−_YELLOW=`tput setaf 3`
132−_BLUE=`tput setaf 4`
133−_MAGENTA=`tput setaf 5`
134−_CYAN=`tput setaf 6`
135−_RESET=`tput sgr0`
136132
137−echo -e "${_GREEN}SETTINGS LOADED${_RESET}"
133+echo -e "${_CYAN}DEFAULT SETTINGS LOADED${_RESET}"
138134
start.sh+8−1
@@ -1,5 +1,7 @@
11#!/bin/bash
22
3+echo "${_GREEN}MINING STARTED${_RESET}"
4+
35# When this script is:
46# * run by crontab, load the settings
57# * run by install, do not load settings
@@ -11,6 +13,7 @@
1113if ! screen -list | grep -q "$_XMRIG_SCREEN"; then
1214
1315 # Call functions
16+ show_settings
1417 show_mysettings
1518 start_xmrig
1619
@@ -23,5 +26,9 @@ else
2326
2427fi
2528
26−echo "${_GREEN}MINING STARTED${_RESET}"
29+echo "${_CYAN}MINING RUNNING${_RESET}"
30+echo "${_YELLOW} The process is running in a screen session."
31+echo "${_YELLOW} The screen session is named:${_RESET} $_XMRIG_SCREEN"
32+echo "${_YELLOW} Command to view process:${_RESET} screen -r $_XMRIG_SCREEN"
33+echo "${_MAGENTA} ENJOY!!!${_RESET}"
2734
stop.sh+3−1
@@ -4,6 +4,8 @@
44# * run by crontab, load the settings
55# * run by install, do not load settings
66
7+echo "${_GREEN}END MINING STARTED${_RESET}"
8+
79if [ -z "$_XMRIG_SCREEN" ]; then
810 # Load settings when run by crontab
911 . settings.sh
@@ -16,5 +18,5 @@ else
1618 stop_xmrig
1719fi
1820
19−echo "${_GREEN}MINING STOPPED${_RESET}"
21+echo "${_CYAN}END MINING STOPPED${_RESET}"
2022