git.iko.soy/xmrig-bash-scripts
on master help sign in
16 files changed+343−253
since splitsnapshots
unifiedsplit
.gitignore+3 README.md+18−17 build.sh+2−9 config.sh+2−56 crontab-off.sh+3−8 crontab-on.sh+3−7 crontab.sh+4−12 depends.sh+4−10 functions.sh+72−40 input.sh+61 install.sh+30−16 maintenance.sh+3−9 settings.sh+85−39 start.sh+47−20 stop.sh+2−10 update.sh+4
.gitignore+3
@@ -1,4 +1,7 @@
11xmrig-cpu/
22*.swp
33crontab
4+null
45config.json
6+myconfig.json
7+mysettings.sh
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+2−9
@@ -1,12 +1,9 @@
11#!/bin/bash
22
3−echo "#################################"
4−echo " BUILD STARTING"
5−echo "#################################"
3+echo "${_GREEN}BUILD STARTED${_RESET}"
64
75# Clone source
86if [ -d "$_XMRIG_CLONE_LOCATION" ]; then
9− echo "Clone already exists"
107
118 # Change to clone directory
129 cd $_XMRIG_CLONE
@@ -20,7 +17,6 @@ if [ -d "$_XMRIG_CLONE_LOCATION" ]; then
2017
2118 else
2219 # Switch to required branch
23− echo "Require: $_XMRIG_BRANCH Switching !!!"
2420 git checkout $_XMRIG_BRANCH
2521
2622 # Pull changes from source
@@ -31,7 +27,6 @@ if [ -d "$_XMRIG_CLONE_LOCATION" ]; then
3127 fi
3228else
3329 # Clone the source
34− echo "Cloning source to $_WORK_DIR/$_XMRIG_CLONE"
3530 git clone $_XMRIG_REPO $_XMRIG_CLONE
3631
3732 # Change to clone directory
@@ -52,7 +47,5 @@ sudo cp $_XMRIG_BUILD_LOCATION/xmrig $_XMRIG_TARGET_LOCATION
5247
5348cd $_WORK_DIR
5449
55−echo "#################################"
56−echo " BUILD COMPLETE"
57−echo "#################################"
50+echo "${_CYAN}BUILD STOPPED${_RESET}"
5851
config.sh+2−56
@@ -1,62 +1,8 @@
11#!/bin/bash
22
3−_API_ID="null"
4−_API_WORKER_ID="$HOSTNAME"
5−
6−_AUTOSAVE="true"
7−
8−_BACKGROUND="false"
9−
10−_COLORS="true"
11−
12−_CPU_ENABLED="true"
13−_CPU_HUGE_PAGES="true"
14−_CPU_HW_AES="$_AES_NI"
15−_CPU_PRIORITY="null"
16−_CPU_ASM="true"
17−_CPU_CN="$_ENV_CPU_THREAD_AFFINITY"
18−
19−_CPU_CN_0="false"
20−_CPU_CN_LITE_0="false"
21−
22−_DONATE_LEVEL="5"
23−
24−_DONATE_OVER_PROXY="1"
25−
26−_HTTP_ENABLED="true"
27−_HTTP_HOST=$(hostname --all-ip-addresses | awk '{print $1}')
28−_HTTP_PORT="8080"
29−_HTTP_ACCESS_TOKEN="null"
30−_HTTP_RESTRICTED="false"
31−
32−_LOG_FILE="null"
33−
34−_POOLS_ALGO="cn/r"
35−_POOLS_URL="$_POOL_SERVER_URL:$_POOL_SERVER_PORT"
36−_POOLS_USER="$_RECEIVE_WALLET"
37−_POOLS_PASS="$HOSTNAME:$_EMAIL"
38−_POOLS_RIG_ID="$HOSTNAME"
39−_POOLS_NICEHASH="true"
40−_POOLS_KEEPALIVE="true"
41−_POOLS_ENABLED="true"
42−_POOLS_TLS="null"
43−_POOLS_TLS_FINDERPRINT="null"
44−_POOLS_DAEMON="false"
45−
46−_PRINT_TIME="30"
47−
48−_RETRIES="5"
49−_RETRIES_PAUSE="5"
50−
51−_SYSLOG="false"
52−
53−_USER_AGENT="null"
54−
55−_WATCH="true"
56−
57−_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)
3+echo "${_GREEN}CONFIG STARTED${_RESET}"
584
595echo "$_CONFIG_JSON" | tee config.json
606
61−
7+echo "${_CYAN}CONFIG STOPPED${_RESET}"
628
crontab-off.sh+3−8
@@ -1,15 +1,12 @@
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
68# off - do not start/stop xmrig
79
8−echo "#################################"
9−echo "# DISABLING CRONTAB #"
10−echo "#################################"
11−
12−
1310# Remove existing crontab
1411echo "Backup existing crontab"
1512crontab -l > crontab
@@ -17,7 +14,5 @@ crontab -l > crontab
1714echo "Removing exiting crontab"
1815crontab -r
1916
20−echo "#################################"
21−echo "# CRONTAB DISABLED #"
22−echo "#################################"
17+echo "${_CYAN}DISABLE CRONTAB STOPPED${_RESET}"
2318
crontab-on.sh+3−7
@@ -1,14 +1,12 @@
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
68# off - do not start/stop xmrig
79
8−echo "####################################"
9−echo "# ENABLING CRONTAB #"
10−echo "####################################"
11−
1210# Get settings
1311. settings.sh
1412. functions.sh
@@ -18,7 +16,5 @@ sleep 5
1816. crontab.sh
1917sleep 5
2018
21−echo "####################################"
22−echo "# CRONTAB ENABLED #"
23−echo "####################################"
19+echo "${_CYAN}ENABLE CRONTAB STOPPED${_RESET}"
2420
crontab.sh+4−12
@@ -1,30 +1,22 @@
11#!/bin/bash
22
3−# Set values in settings script
43
5−echo "#################################"
6−echo " UPDATING CRONTAB"
7−echo "#################################"
4+echo "${_GREEN}CRONTAB STARTED${_RESET}"
85
6+# Set values in settings script
97
108# Remove existing crontab
11−echo "Backup existing crontab"
129crontab -l > crontab
1310
14−echo "Removing exiting crontab"
1511crontab -r
1612
1713# Setup users contab
18−echo "Creating new crontab"
1914
20−crontab -l | { cat; echo "#Start at $_USER_TIMESTART on days $_USER_CRONDAYS
15+crontab -l | { cat; echo "#Start at $_USER_CRONSTART on days $_USER_CRONDAYS
21160 $_USER_CRONSTART * * $_USER_CRONDAYS screen -dmS $_XMRIG_SCREEN xmrig --config=$_XMRIG_CONFIG_LOCATION"; } | crontab -
2217
2318crontab -l | { cat; echo "#Stop at $_USER_TIMESTOP on days $_USER_CRONDAYS
24190 $_USER_CRONSTOP * * $_USER_CRONDAYS screen -S $_XMRIG_SCREEN -X kill"; } | crontab -
2520
26−
27−echo "#################################"
28−echo " CRONTAB UPDATED"
29−echo "#################################"
21+echo "${_CYAN}CRONTAB STOPPED${_RESET}"
3022
depends.sh+4−10
@@ -1,23 +1,17 @@
11#!/bin/bash
2−echo "#################################"
3−echo " INSTALLING DEPENDENCIES "
4−echo "#################################"
52
63# Install the software requirements
74
8−if [ $_APT_DEPENDS = 1 ]; then
5+echo "${_GREEN}INSTALL DEPENDS STARTED${_RESET}"
6+
7+if [ "$_APT_DEPENDS" -eq "1" ]; then
98
109 # Install xmrig depends
1110 sudo apt install -y software-properties-common git build-essential cmake libuv1-dev libssl-dev libmicrohttpd-dev libhwloc-dev gcc g++
1211
1312 # Install xmrig-bash-scripts depends
1413 sudo apt install -y jo cpuid screen
15−else
16−
17− echo "Depend install is set to NO ($_APT_DEPENDS) Skipping"
1814
1915fi
2016
21−echo "#################################"
22−echo " DEPENDENCIES INSTALLED "
23−echo "#################################"
17+echo "${_CYAN}INSTALL DEPENDS STOPPED${_RESET}"
functions.sh+72−40
@@ -1,44 +1,80 @@
1−#!/usr/bin/env bash
1+#!/bin/bash
2+
3+echo -e "${_GREEN}LOADING FUNCTIONS${_RESET}"
4+
5+function prompt_confirm() {
6+ while true; do
7+ read -r -n 1 -p "${1:-Continue?} [y/n]: " REPLY
8+ case $REPLY in
9+ [yY]) echo ; return 0 ;;
10+ [nN]) echo ; return 1 ;;
11+ *) printf " \033[31m %s \n\033[0m" "invalid input [y/n]"
12+ esac
13+ done
14+}
15+
16+function show_settings () {
17+ echo "${_CYAN}Settings from loaded environment:${_RESET}"
18+ echo "${_GREEN}Pool URL:${_RESET}: $_POOLS_URL"
19+ echo "${_GREEN}Recieve Wallet:${_RESET}: $_POOLS_USER"
20+ echo "${_GREEN}Email Address:${_RESET}: $_POOLS_PASS"
21+}
22+
23+function show_mysettings () {
24+ if [ -f $_WORK_DIR/$_MYSETTINGS_FILE ]; then
25+ load_mysettings
26+ echo "${_CYAN}Settings from mysettings.sh:${_RESET}"
27+ echo "${_GREEN}Pool URL:${_RESET}: $_POOLS_URL"
28+ echo "${_GREEN}Recieve Wallet:${_RESET}: $_POOLS_USER"
29+ echo "${_GREEN}Email Address:${_RESET}: $_POOLS_PASS"
30+ fi
31+}
32+
33+function load_mysettings () {
34+ if [ -f $_WORK_DIR/$_MYSETTINGS_FILE ]; then
35+ . $_MYSETTINGS_FILE
36+ fi
37+}
38+
39+function my_config_json () {
240
3−build_xmrig () {
41+ _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) opencl=$(jo enabled=$_OPENCL_ENABLED cache=$_OPENCL_CACHE loader=$_OPENCL_LOADER platform=$_OPENCL_PLATFORM) 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) log-file=$_LOG_FILE 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)
42+
43+}
44+
45+function build_xmrig () {
446 if [ -d $_XMRIG_BUILD_LOCATION ]; then
547 # Remove existing build directory
6− echo "Found old build directory. Removing"
748 rm -rf $_XMRIG_BUILD_LOCATION
849
950 # Make new build directory
10− echo "Creating a build directory"
1151 mkdir $_XMRIG_BUILD_LOCATION
1252 else
1353 # Make new build directory
14− echo "Creating a build directory"
1554 mkdir $_XMRIG_BUILD_LOCATION
1655 fi
1756
1857 # Change to build directory
19− echo "Changing to build directory"
2058 cd $_XMRIG_BUILD_LOCATION
2159
2260 # Configure cmake scafolding
23− echo "Configuring cmake scafolding"
24− cmake .. -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7
61+ cmake ..
2562
2663 # Compile the software
27− echo "Starting build"
2864 make
2965}
3066
3167
32−start_xmrig () {
68+function start_xmrig () {
3369 screen -dmS $_XMRIG_SCREEN xmrig --config=$_XMRIG_CONFIG_LOCATION
3470}
3571
3672
37−stop_xmrig () {
73+function stop_xmrig () {
3874 screen -S $_XMRIG_SCREEN -X kill
3975}
4076
41−check_cpu () {
77+function check_cpu () {
4278 # Check if CPU supports AES-NI
4379 cpuid | grep -i aes > hw-aes.txt
4480 if grep -q true "hw-aes.txt"; then
@@ -50,44 +86,40 @@ check_cpu () {
5086
5187 # Get number of available CPU Cores
5288 _ENV_CORE=$(nproc --all)
53− echo -e "CPU Cores: $_ENV_CORE\n"
5489
5590 # Get CPU L3 cache value
5691 _ENV_CORE_L3=$(getconf LEVEL3_CACHE_SIZE)
57− echo -e "L3 Cache in byte: $_ENV_CORE_L3\n"
5892}
5993
60−calc_threads () {
61−
62− # Affine number of threads for _CPU_CN
63− _COUNTER="$(($_ENV_CORE_THREADS - 1))"
64− _ENV_CPU_THREADS=()
94+function calc_threads () {
95+ # Each thread needs 2048 byte (2 Megabyte)
96+ # Calculate number of threads supported with L3 cache size
6597
66− for i in `seq 0 $_COUNTER`; do
67− _ENV_CPU_THREADS+=("$i")
68− done
98+ _ENV_THREAD_QTY=$(( ($_ENV_CORE_L3/2048)/1000 ))
6999
70− echo "Thread CPU Affinity: ${_ENV_CPU_THREADS[@]}"
71− _ENV_CPU_THREAD_AFFINITY="${_ENV_CPU_THREADS[@]}"
100+ # Affine number of threads for _CPU_CN
101+ _COUNTER="$(( $_ENV_THREAD_QTY-1 ))"
72102
73− # Setting according to cpu cores but xmrig will not use all
74− # change to make value use _ENV_CORE_THREADS
75− # Check that hugepages set in /etc/sysctl.conf
76− _ENV_CHECK="nr_hugepages"
103+ _ENV_CPU_THREAD_AFFINITY="$(seq -s " " 0 $_COUNTER)"
77104
78− if sudo grep -q $_ENV_CHECK /etc/sysctl.conf; then
79− echo "Found nr_hugepages in /etc/sysctl.conf. All good!!"
80− echo -e "Refreshing sysctl configuration just to be sure.\n"
81− sudo sysctl -p
82− else
83− # Set value in current env
84− echo -e "Did not find nr_hugepages in /etc/sysctl.conf. Fixing that!!\n"
85− sudo sysctl -w vm.nr_hugepages="$_ENV_CORE"
86− sudo sysctl -p
105+}
87106
88− # Add value to sysctl
89− echo "vm.nr_hugepages=$_ENV_CORE" | sudo tee -a /etc/sysctl.conf
90− fi
107+function calc_hugepages () {
108+ # Setting according to cpu cores but xmrig will not use all
109+ # change to make value use _ENV_CORE_THREADS
110+ # Check that hugepages set in /etc/sysctl.conf
111+
112+ _ENV_CHECK="nr_hugepages"
113+
114+ if sudo grep -q $_ENV_CHECK /etc/sysctl.conf; then
115+ sudo sysctl -p
116+ else
117+ # Set value in current env
118+ sudo sysctl -w vm.nr_hugepages="$_ENV_THREAD_QTY"
119+ # Add value to sysctl
120+ sudo sysctl -p
121+ fi
91122
92123}
93124
125+echo -e "${_CYAN}FUNCTIONS LOADED${_RESET}"
input.shnew file+61
@@ -0,0 +1,61 @@
1+#!/bin/bash
2+
3+# Ask user questions
4+# Capture input
5+# if setting already exist use existing
6+
7+echo -e "${_GREEN}USER SETTINGS STARTED${_RESET}"
8+
9+if [ -f $_WORK_DIR/$_MYSETTINGS_FILE ]; then
10+
11+ # Call function
12+
13+ load_mysettings
14+
15+ my_config_json
16+
17+else
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+
26+
27+ prompt_confirm "Enter your own settings?"
28+
29+ if [ "$?" -eq 0 ]; then
30+
31+ # Create a file
32+
33+ touch $_MYSETTINGS_FILE_LOCATION
34+ chmod +x $_MYSETTINGS_FILE_LOCATION
35+ echo "#!/bin/bash" > $_MYSETTINGS_FILE_LOCATION
36+
37+ # Prompt user input
38+
39+ echo "Current pool URL: $_POOLS_URL"
40+ read -p "Enter new pool URL: " _POOLS_URL
41+ echo "_POOLS_URL=\"$_POOLS_URL\"" >> $_MYSETTINGS_FILE_LOCATION
42+
43+ echo "Current Receive Wallet address: $_POOLS_USER"
44+ read -p "Enter new Receive Wallet address: " _POOLS_USER
45+ echo "_POOLS_USER=\"$_POOLS_USER\"" >> $_MYSETTINGS_FILE_LOCATION
46+
47+ echo "Current email address: $_POOLS_PASS"
48+ read -p "Enter new email address: " _POOLS_PASS
49+ echo "_POOLS_PASS=\"$_POOLS_PASS\"" >> $_MYSETTINGS_FILE_LOCATION
50+
51+ fi
52+
53+ # Call function
54+
55+ load_mysettings
56+
57+ my_config_json
58+
59+fi
60+
61+echo "${_CYAN}USER SETTINGS STOPPED${_RESET}"
install.sh+30−16
@@ -1,7 +1,26 @@
11#!/bin/bash
22
3−# Set that user passwdless sudo
43
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+
15+_DEBUG=$1
16+
17+if $_DEBUG; then
18+ set +x
19+else
20+ set -x
21+fi
22+
23+# Set that user passwdless sudo
524if sudo grep -q $USER /etc/sudoers.d/README; then
625 echo -e "User $USER found in /etc/sudoers.d/README. All good!!\n"
726else
@@ -9,32 +28,29 @@ else
928 echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/README
1029fi
1130
31+# Load functions
32+. functions.sh
33+
1234# Get settings
1335. settings.sh
14−sleep 5
15−
16−# Stop running instance
17−. stop.sh
1836
1937# Update system
2038. maintenance.sh
21−sleep 5
2239
2340# Install dependencies
2441. depends.sh
25−sleep 5
42+
43+# User input
44+. input.sh
45+
46+# Stop running instance
47+. stop.sh
2648
2749# Get source and build by sourcing our build file
2850. build.sh
29−sleep 5
3051
3152# Create a config.json
3253. config.sh
33−sleep 5
34−
35−# Setup crontab for user
36−. crontab.sh
37−sleep 5
3854
3955# Unset REPO variable so start script will execute program
4056SCREEN=""
@@ -43,6 +59,4 @@ SCREEN=""
4359. start.sh
4460
4561
46−echo "####################################"
47−echo "# ALL DONE - INSTALLATION COMPLETE #"
48−echo "####################################"
62+echo -e "${_CYAN}INSTALLATION COMPLETED${_RESET}"
maintenance.sh+3−9
@@ -1,18 +1,12 @@
11#!/bin/bash
22
3−echo "####################################"
4−echo "# STARTING SYSTEM MAINTENANCE #"
5−echo "####################################"
3+echo "${_GREEN}MAINTENANCE STARTED${_RESET}"
64
7−if [ $_APT_MAINETANCE = 1 ]; then
5+if [ "$_APT_MAINETANCE" -eq "1" ]; then
86
97 sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean
108
11−else
12− echo "Apt maintenance is set to NO ($_APT_MAINETANCE) Skipping"
139fi
1410
15−echo "####################################"
16−echo "# SYSTEM MAINTENANCE COMPLETE #"
17−echo "####################################"
11+echo "${_CYAN}MAINTENANCE STOPPED${_RESET}"
1812
settings.sh+85−39
@@ -1,83 +1,130 @@
1−#!/usr/bin/env bash
1+#!/bin/bash
22
3−echo "#################################"
4−echo " LOADING SETTINGS "
5−echo "#################################"
3+echo -e "${_GREEN}LOADING DEFAULT SETTINGS${_RESET}"
64
7−_EMAIL="miners@prepaidmeters.com"
5+_EMAIL="spam@iko.soy"
86
9−_RECEIVE_WALLET="854sqm2Cm4TB2XgPHWqSPSbnFAe3SMzdEDzZHpukQ8NHBPFropbnkFmEKiZPgwjMFC9PTjaFscR2UU6ZwFCqJzGMUiZVbTM"
7+_RECEIVE_WALLET="44FADBDhNRvjJszF5mLS4VCwZ71mY7ftfUErEisPoT724hb5eYuvuFqWthniY8dGPBTcWuBoeLrLJVkxLHCb1Lsd4DdbZzZ"
108
11−_POOL_SERVER_URL="192.168.4.5"
12−_POOL_SERVER_PORT="3333"
9+_POOL_SERVER_URL="xmrpool.eu"
10+_POOL_SERVER_PORT="5555"
1311
14−#####################################################################
12+# Call function
13+show_settings
1514
16−# DO NOT CHANGE AFTER THIS POINT UNLESS YOU KNOW WHAT YOU ARE DOING
15+#######################################################################
16+# DO NOT CHANGE AFTER THIS POINT UNLESS YOU KNOW WHAT YOU ARE DOING #
17+#######################################################################
1718
18−#####################################################################
19+_API_ID='null'
20+_API_WORKER_ID="$HOSTNAME"
1921
20−# Load functions
21−. functions.sh
22+_AUTOSAVE="true"
23+
24+_BACKGROUND="false"
25+
26+_COLORS="true"
27+
28+# call check_cpu
29+check_cpu
30+
31+# call calc_threads
32+calc_threads
33+
34+_CPU_ENABLED="true"
35+_CPU_HUGE_PAGES="true"
36+_CPU_HW_AES="$_AES_NI"
37+_CPU_PRIORITY='null'
38+_CPU_ASM="true"
39+_CPU_CN="$_ENV_CPU_THREAD_AFFINITY"
40+
41+_CPU_CN_0="false"
42+_CPU_CN_LITE_0="false"
43+
44+_OPENCL_ENABLED="false"
45+_OPENCL_CACHE="true"
46+_OPENCL_LOADER='null'
47+_OPENCL_PLATFORM="AMD"
48+
49+_DONATE_LEVEL="0"
50+
51+_DONATE_OVER_PROXY="1"
52+
53+_HTTP_ENABLED="true"
54+_HTTP_HOST=$(hostname --all-ip-addresses | awk '{print $1}')
55+_HTTP_PORT="8080"
56+_HTTP_ACCESS_TOKEN='null'
57+_HTTP_RESTRICTED="false"
58+
59+_LOG_FILE='null'
60+
61+_POOLS_ALGO="cn/r"
62+_POOLS_URL="$_POOL_SERVER_URL:$_POOL_SERVER_PORT"
63+_POOLS_USER="$_RECEIVE_WALLET"
64+_POOLS_PASS="$HOSTNAME:$_EMAIL"
65+_POOLS_RIG_ID="$HOSTNAME"
66+_POOLS_NICEHASH="true"
67+_POOLS_KEEPALIVE="true"
68+_POOLS_ENABLED="true"
69+_POOLS_TLS='null'
70+_POOLS_TLS_FINDERPRINT='null'
71+_POOLS_DAEMON="false"
72+
73+_PRINT_TIME="30"
74+
75+_RETRIES="5"
76+_RETRIES_PAUSE="5"
77+
78+_SYSLOG="false"
79+
80+_USER_AGENT='null'
81+
82+_WATCH="true"
2283
2384# Set working directory
2485_WORK_DIR="$(pwd)"
2586cd $_WORK_DIR
26−echo -e "Working directory: $_WORK_DIR\n"
2787
2888# Set repository from which to get the source
2989_XMRIG_REPO="https://github.com/xmrig/xmrig.git"
30−echo -e "Git source repo: $_XMRIG_REPO\n"
3190
3291# Set name of folder to create when cloning from REPO
3392_XMRIG_CLONE="xmrig-cpu"
34−echo -e "Source folder name: $_XMRIG_CLONE\n"
3593
3694# Set clone directory path
3795_XMRIG_CLONE_LOCATION="$_WORK_DIR/$_XMRIG_CLONE"
38−echo -e "Source folder location: $_XMRIG_CLONE_LOCATION\n"
3996
4097# Set branch from which to build
41−_XMRIG_BRANCH="beta"
42−echo -e "Build branch: $_XMRIG_BRANCH\n"
98+_XMRIG_BRANCH="master"
4399
44100# Set build directory
45101_XMRIG_BUILD="build"
46−echo -e "Build directory: $_XMRIG_BUILD\n"
47102
48103# Set build directory location
49104_XMRIG_BUILD_LOCATION="$_XMRIG_CLONE_LOCATION/$_XMRIG_BUILD"
50−echo -e "Build directory location: $_XMRIG_BUILD_LOCATION\n"
51105
52106# Set where to install binary
53107_XMRIG_TARGET_LOCATION="/usr/bin/"
54−echo -e "Install path: $_XMRIG_TARGET_LOCATION\n"
108+
109+# Set mysettings file
110+_MYSETTINGS_FILE="mysettings.sh"
111+
112+# Set mysettings file location
113+_MYSETTINGS_FILE_LOCATION="$_WORK_DIR/$_MYSETTINGS_FILE"
55114
56115# Set the config file name
57116_XMRIG_CONFIG="config.json"
58−echo -e "Config file: $_XMRIG_CONFIG\n"
59117
60118# Set config location
61119_XMRIG_CONFIG_LOCATION="$_WORK_DIR/$_XMRIG_CONFIG"
62−echo -e "Config file location: $_XMRIG_CONFIG_LOCATION\n"
63120
64121# Set values for crontab
65−_USER_CRONSTART="18"
66−_USER_CRONSTOP="6"
122+_USER_CRONSTART="17"
123+_USER_CRONSTOP="8"
67124_USER_CRONDAYS="1-5"
68−echo -e "Cron job start: $_USER_CRONSTART\n"
69−echo -e "Cron job stop: $_USER_CRONSTOP\n"
70−echo -e "Cron on days: $_USER_CRONDAYS\n"
71125
72126# Set the name of the screen created by start script
73127_XMRIG_SCREEN="xmrig-cpu"
74−echo -e "Screen session name: $_XMRIG_SCREEN\n"
75−
76−# call check_cpu
77−check_cpu
78−
79−# call calc_threads
80−calc_threads
81128
82129# Run apt maintenance
83130# 1 = yes 0 = no
@@ -87,7 +134,6 @@ _APT_MAINETANCE="1"
87134# 1 = yes 0 = no
88135_APT_DEPENDS="1"
89136
90−echo "#################################"
91−echo " SETTINGS LOADED"
92−echo "#################################"
137+
138+echo -e "${_CYAN}DEFAULT SETTINGS LOADED${_RESET}"
93139
start.sh+47−20
@@ -1,32 +1,59 @@
1−#!/usr/bin/env bash
1+#!/bin/bash
2+
3+echo "${_GREEN}MINING STARTED${_RESET}"
24
35# When this script is:
46# * run by crontab, load the settings
57# * run by install, do not load settings
68
7−echo "####################################"
8−echo " STARTING "
9−echo "####################################"
10−. settings.sh
9+# Reload settings and functions for when running standalone
1110. functions.sh
11+. settings.sh
1212
13−if ! screen -list | grep -q "$_XMRIG_SCREEN"; then
14− # Call function
15− echo "No screen sessionfound. Starting new screen session."
16− start_xmrig
13+# if ! screen -list | grep -q "$_XMRIG_SCREEN"; then
14+
15+ # Call functions
16+ show_settings
17+ show_mysettings
18+ # start_xmrig
1719
1820 # List screen
19− screen -ls
20−else
21− # Call function
22− echo "Found existing screen session. Leaving."
21+ # screen -ls
22+# else
2323
2424 # List screen
25− screen -ls
26−
27−fi
28−
29−echo "####################################"
30−echo " STARTED - use screen -r to view "
31−echo "####################################"
25+ # screen -ls
26+
27+# fi
28+echo "[Unit]" | sudo tee /etc/systemd/system/xmrig.service
29+echo "Description=XMRIG service" | sudo tee -a /etc/systemd/system/xmrig.service
30+echo "After=network.target" | sudo tee -a /etc/systemd/system/xmrig.service
31+echo "StartLimitIntervalSec=0" | sudo tee -a /etc/systemd/system/xmrig.service
32+echo "[Service]" | sudo tee -a /etc/systemd/system/xmrig.service
33+echo "Type=simple" | sudo tee -a /etc/systemd/system/xmrig.service
34+echo "Restart=always" | sudo tee -a /etc/systemd/system/xmrig.service
35+echo "RestartSec=3" | sudo tee -a /etc/systemd/system/xmrig.service
36+echo "User=root" | sudo tee -a /etc/systemd/system/xmrig.service
37+echo "ExecStart=$_XMRIG_BUILD_LOCATION/xmrig --config=$_XMRIG_CONFIG_LOCATION" | sudo tee -a /etc/systemd/system/xmrig.service
38+echo "" | sudo tee -a /etc/systemd/system/xmrig.service
39+echo "[Install]" | sudo tee -a /etc/systemd/system/xmrig.service
40+echo "WantedBy=multi-user.target" | sudo tee -a /etc/systemd/system/xmrig.service
41+
42+echo "STARTING XMRIG/SERVICES"
43+
44+sudo service logrotate start
45+sudo service ntp start
46+sudo service xmrig start
47+
48+echo "STARTING XMRIG/SERVICES @ BOOT"
49+
50+sudo systemctl enable logrotate
51+sudo systemctl enable ntp
52+sudo systemctl enable xmrig
53+
54+echo "${_CYAN}MINING RUNNING${_RESET}"
55+echo "${_YELLOW} The process is running in a screen session."
56+echo "${_YELLOW} The screen session is named:${_RESET} $_XMRIG_SCREEN"
57+echo "${_YELLOW} Command to view process:${_RESET} screen -r $_XMRIG_SCREEN"
58+echo "${_MAGENTA} ENJOY!!!${_RESET}"
3259
stop.sh+2−10
@@ -4,13 +4,10 @@
44# * run by crontab, load the settings
55# * run by install, do not load settings
66
7−echo "#################################"
8−echo " KILLING SCREEN"
9−echo "#################################"
7+echo "${_GREEN}END MINING STARTED${_RESET}"
108
119if [ -z "$_XMRIG_SCREEN" ]; then
1210 # Load settings when run by crontab
13− echo "Loading settings and functions"
1411 . settings.sh
1512 . functions.sh
1613
@@ -21,10 +18,5 @@ else
2118 stop_xmrig
2219fi
2320
24−# Check results
25−echo "Screen listing"
26−screen -ls
21+echo "${_CYAN}END MINING STOPPED${_RESET}"
2722
28−echo "#################################"
29−echo " SCREEN KILLED"
30−echo "#################################"
update.sh+4
@@ -1,7 +1,11 @@
11#!/bin/bash
22
3+echo "${_GREEN}UPDATE STARTED${_RESET}"
4+
35git pull
46
57# install
68. install.sh
79sleep 5
10+
11+echo "${_CYAN}UPDATE COMPLETE${_RESET}"