git.iko.soy/xmrig-bash-scripts
on master help sign in
.gitignore+3
since splitsnapshots
unifiedsplit
@@ -1,4 +1,7 @@
1xmrig-cpu/
1xmrig-cpu/
2*.swp
2*.swp
3crontab
3crontab
4+null
4config.json
5config.json
6+myconfig.json
7+mysettings.sh
CONTRIBUTING.mdnew file+85
@@ -0,0 +1,85 @@
1+# Contributing
2+
3+When contributing to this repository, please first discuss the change you wish to make via issue with the owners of this repository before making a change.
4+
5+Please note we have a code of conduct, please follow it in all your interactions with the project.
6+
7+## Pull Request Process
8+
9+1. Ensure any install or build artifacts are not included or are removed.
10+2. Update the README.md with details of changes to the interface.
11+
12+## Code of Conduct
13+
14+### Our Pledge
15+
16+In the interest of fostering an open and welcoming environment, we as
17+contributors and maintainers pledge to making participation in our project and
18+our community a harassment-free experience for everyone, regardless of age, body
19+size, disability, ethnicity, gender identity and expression, level of experience,
20+nationality, personal appearance, race, religion, or sexual identity and
21+orientation.
22+
23+### Our Standards
24+
25+Examples of behavior that contributes to creating a positive environment
26+include:
27+
28+* Using welcoming and inclusive language
29+* Being respectful of differing viewpoints and experiences
30+* Gracefully accepting constructive criticism
31+* Focusing on what is best for the community
32+* Showing empathy towards other community members
33+
34+Examples of unacceptable behavior by participants include:
35+
36+* The use of sexualized language or imagery and unwelcome sexual attention or
37+advances
38+* Trolling, insulting/derogatory comments, and personal or political attacks
39+* Public or private harassment
40+* Publishing others' private information, such as a physical or electronic
41+ address, without explicit permission
42+* Other conduct which could reasonably be considered inappropriate in a
43+ professional setting
44+
45+### Our Responsibilities
46+
47+Project maintainers are responsible for clarifying the standards of acceptable
48+behavior and are expected to take appropriate and fair corrective action in
49+response to any instances of unacceptable behavior.
50+
51+Project maintainers have the right and responsibility to remove, edit, or
52+reject comments, commits, code, wiki edits, issues, and other contributions
53+that are not aligned to this Code of Conduct, or to ban temporarily or
54+permanently any contributor for other behaviors that they deem inappropriate,
55+threatening, offensive, or harmful.
56+
57+### Scope
58+
59+This Code of Conduct applies both within project spaces and in public spaces
60+when an individual is representing the project or its community. Examples of
61+representing a project or community include using an official project e-mail
62+address, posting via an official social media account, or acting as an appointed
63+representative at an online or offline event. Representation of a project may be
64+further defined and clarified by project maintainers.
65+
66+### Enforcement
67+
68+Instances of abusive, harassing, or otherwise unacceptable behavior may be
69+reported by contacting the project team at [INSERT EMAIL ADDRESS]. All
70+complaints will be reviewed and investigated and will result in a response that
71+is deemed necessary and appropriate to the circumstances. The project team is
72+obligated to maintain confidentiality with regard to the reporter of an incident.
73+Further details of specific enforcement policies may be posted separately.
74+
75+Project maintainers who do not follow or enforce the Code of Conduct in good
76+faith may face temporary or permanent repercussions as determined by other
77+members of the project's leadership.
78+
79+### Attribution
80+
81+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
82+available at [http://contributor-covenant.org/version/1/4][version]
83+
84+[homepage]: http://contributor-covenant.org
85+[version]: http://contributor-covenant.org/version/1/4/
README.md+86−23
@@ -1,5 +1,5 @@
1# xmrig-bash-scripts
1# xmrig-bash-scripts
2−A simple collection of bash shell scripts to manage installation, update and configuration of [xmrig cpu](https://github.com/xmrig/xmrig) across multiple hosts.
2+A set of convenience scripts, written in bash, to help manage installation, configuration and update of [xmrig cpu](https://github.com/xmrig/xmrig) across multiple hosts.
3
3
4
4
5## Download
5## Download
@@ -8,49 +8,112 @@ A simple collection of bash shell scripts to manage installation, update and con
8
8
9### Prerequisites
9### Prerequisites
10
10
11−* Ubuntu Linux (or other Debian-based distribution)
11+There is allot to install so the install script will do most of the heavy lifting.
12+At the start the expectation is that you have:
13+* Computer running Ubuntu 18.04 (LTS)
14+* Bash shell
12* User account with sudo privileges
15* User account with sudo privileges
16+* Installed git
17+* Optionally installed [xmrig-proxy](https://github.com/xmrig/xmrig-proxy)
13
18
14−### Installion
19+### Agreeable
15
20
16−1. Change in to the cloned directory
21+Some knowledge of:
17− `cd xmrig-bash-scripts`
22+* Linux Command Line Interface
23+* Linux shell `bash`
18
24
19−2. Edit the settings file to your preference.
25+### Installation
20− `vim settings.sh`
21
26
27+1. Change to your user home directory.
28+ `cd ~`
29+1. Install git.
30+ `sudo apt install git`
31+1. Clone this project.
32+ `git clone https://github.com/seanwhe/xmrig-bash-scripts`
33+1. Change into the cloned directory.
34+ `cd xmrig-bash-scripts`
22−3. Run the install script
35+1. Run the install script
23 `./install.sh`
36 `./install.sh`
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.
45+ `screen -r`
46+
47+### Operation
48+
49+Defaults - 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.
50+
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'.
54+
55+This should work out the box, if you follow the installation steps and enter your own values for 'mysettings.sh.
56+
57+Once you have a running xmrig then you can start playing around and tweaking to suite requirements.
58+
59+What follows is a brief of the shell scripts you will find. The names are mostly self explanatory.
60+Comments and notes are used liberally in the scripts to help give you hints as to how it works.
61+The scripts are designed to be modular to promote resuse, execute exclusion and standalone execution.
62+
63+* build.sh - clones xmrig to ``~/xmrig-bash-scripts`/xmrig-cpu`, configures, builds and copies xmrig to `/usr/bin/`
64+* config.sh - contains variables that aid in defining the values for the attributes found in config.json.
65+* crontab.sh - installs a cron to start and a cron to stop at specific times (Can be commented out of install if desired).
66+* crontab-off - removed the users crontab created during install.
67+* crontab-on.sh - redefines the users crontab as created during install.
68+* depends.sh - installs dependancies required by xmrig and these scripts.
69+* functions.sh - a collection of functions used in various of the scripts.
70+* input.sh - prompts to enter values for creating 'mysettings.sh'
71+* install.sh - the main entry point when first installing.
72+* maintenance.sh - performs apt update, upgrade, autoremove and autoclean operations.
73+* settings.sh - contains variables used by these scripts.
74+* start.sh - starts xmrig in a screen session.
75+* stop.sh - stops xmrig screen session.
76+
77+### Viewing the log
78+Default of the start script is to create a screen session named 'xmrig-cpu'.
79+This can be changed in the settings script if required.
80+To view the log after installation is finished or after running the start script, used the following command:
81+`screen -r xmrig-cpu`
24
82
25−The install script do the following:
83+### Updating
26−1. Load the settings ensuring that your user has passwordless sudo and that vm.nr_hugepages is set.
84+A simple `git update` in `~/xmrig-bash-scripts` will update these scripts.
27−2. Stop any existing screen session runing xmrig.
28−3. Run apt update, upgrade, autoremove, autoclean on system.
29−4. Install required build dependencies.
30−5. Git clone xmrig source to ~/xmrig-bash-scripts/xmrig-cpui/ and change to specified branch
31−6. Build and install xmrig to /usr/bin
32−7. Start a screen named xmrig-cpu running xmrig
33
85
34−## Viewing mining process
86+The install script can be run at any time to update the xmrig source found `~/xmrig-bash-scripts/xmrig-cpu`.
35−`screen -r xmrig-cpu`
87+The branch checkout is taken from the `_XMRIG_BRANCH` variable in `settings.sh`.
36
88
37−Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on our code of conduct, and the process for submitting pull requests to us.
89+A script named update.sh is provided to perform both these steps in a single command.
90+
91+## Reporting issues
92+
93+[xmrig cpu](https://github.com/xmrig/xmrig) and [xmrig bash scripts](https://github.com/seanwhe/xmrig-bash-scripts.git) are different projects run by different people.
94+
95+While the developers of both projects may be seen interacting with one another on either project, we ask that you report issues to the respective projects.
96+In other words, post issues for:
97+* xmrig, the Monero (XMR) CPU miner, over at [xmrig issues tracker](https://github.com/xmrig/xmrig/issues)
98+* xmrig-bash-scripts, these conveniece scripts, over at [xmrig-bash-scripts](https://github.com/seanwhe/xmrig-bash-scripts/issues)
38
99
39## Versioning
100## Versioning
40
101
41We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/seanwhe/xmrig-bash-scripts/tags).
102We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/seanwhe/xmrig-bash-scripts/tags).
42
103
104+## Contributing
105+Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on our code of conduct, and the process for submitting pull requests to us.
106+
107+See also the list of [contributors](https://github.com/seanwhe/xmrig-bash-scripts/CONTRIBUTORS)
108+
43## Authors
109## Authors
44
110
45* **Sean Wheller** - *Initial work* - [seanwhe](https://github.com/seanwhe)
111* **Sean Wheller** - *Initial work* - [seanwhe](https://github.com/seanwhe)
46
112
47−## CONTRIBUTING
48−See also the list of [contributors](https://github.com/seanwhe/xmrig-bash-scripts/CONTRIBUTORS
49−
50## License
113## License
51
114
52This project is licensed under the GNU General Public License v3.0 - see the [LICENSE.md](LICENSE.md) file for details
115This project is licensed under the GNU General Public License v3.0 - see the [LICENSE.md](LICENSE.md) file for details
53
116
54## Acknowledgments
117## Acknowledgments
55
118
56−* Thanks to [fireice-uk](https://github.com/fireice-uk) for developing and maintaining xmrig
119+* Thanks to [fireice-uk](https://github.com/fireice-uk) for developing and maintaining [xmrig products](https://xmrig.com/).
build.sh+17−12
@@ -1,25 +1,32 @@
1#!/bin/bash
1#!/bin/bash
2
2
3−echo "#################################"
3+echo "${_GREEN}BUILD STARTED${_RESET}"
4−echo " BUILD STARTING"
5−echo "#################################"
6
4
7# Clone source
5# Clone source
8if [ -d "$_XMRIG_CLONE_LOCATION" ]; then
6if [ -d "$_XMRIG_CLONE_LOCATION" ]; then
9− echo "Clone already exists"
10
7
11 # Change to clone directory
8 # Change to clone directory
12 cd $_XMRIG_CLONE
9 cd $_XMRIG_CLONE
13
10
11+ if git branch | grep -q -m1 "* $_XMRIG_BRANCH"; then
14− # Pull changes from source
12+ # Pull changes from source
15− git pull
13+ git pull
16
14
17− # Call function
15+ # Call function
18− build_xmrig
16+ build_xmrig
17+
18+ else
19+ # Switch to required branch
20+ git checkout $_XMRIG_BRANCH
21+
22+ # Pull changes from source
23+ git pull
19
24
25+ # Call function
26+ build_xmrig
27+ fi
20else
28else
21 # Clone the source
29 # Clone the source
22− echo "Cloning source to $_WORK_DIR/$_XMRIG_CLONE"
23 git clone $_XMRIG_REPO $_XMRIG_CLONE
30 git clone $_XMRIG_REPO $_XMRIG_CLONE
24
31
25 # Change to clone directory
32 # Change to clone directory
@@ -40,7 +47,5 @@ sudo cp $_XMRIG_BUILD_LOCATION/xmrig $_XMRIG_TARGET_LOCATION
40
47
41cd $_WORK_DIR
48cd $_WORK_DIR
42
49
43−echo "#################################"
50+echo "${_CYAN}BUILD STOPPED${_RESET}"
44−echo " BUILD COMPLETE"
45−echo "#################################"
46
51
config.sh+2−56
@@ -1,62 +1,8 @@
1#!/bin/bash
1#!/bin/bash
2
2
3−_API_ID="null"
3+echo "${_GREEN}CONFIG STARTED${_RESET}"
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="0 1 2 3"
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)
58
4
59echo "$_CONFIG_JSON" | tee config.json
5echo "$_CONFIG_JSON" | tee config.json
60
6
61−
7+echo "${_CYAN}CONFIG STOPPED${_RESET}"
62
8
crontab-off.shnew file+18
@@ -0,0 +1,18 @@
1+#!/bin/bash
2+
3+echo "${_GREEN}DISABLE CRONTAB STARTED${_RESET}"
4+
5+# Removes a user crontab
6+# Used in conjunction with crontab-on.sh to toggle user crontab between states:
7+# on - start/stop xmrig at specified times
8+# off - do not start/stop xmrig
9+
10+# Remove existing crontab
11+echo "Backup existing crontab"
12+crontab -l > crontab
13+
14+echo "Removing exiting crontab"
15+crontab -r
16+
17+echo "${_CYAN}DISABLE CRONTAB STOPPED${_RESET}"
18+
crontab-on.shnew file+20
@@ -0,0 +1,20 @@
1+#!/bin/bash
2+
3+echo "${_GREEN}ENABLE CRONTAB STARTED${_RESET}"
4+
5+# Defines a user crontab with schedules as defined in settings.sh
6+# Used in conjunction with crontab-off.sh to toggle user crontab between states:
7+# on - start/stop xmrig at specified times
8+# off - do not start/stop xmrig
9+
10+# Get settings
11+. settings.sh
12+. functions.sh
13+sleep 5
14+
15+# Setup crontab for user
16+. crontab.sh
17+sleep 5
18+
19+echo "${_CYAN}ENABLE CRONTAB STOPPED${_RESET}"
20+
crontab.sh+7−14
@@ -1,29 +1,22 @@
1#!/bin/bash
1#!/bin/bash
2
2
3−# Set values in settings script
4
3
5−echo "#################################"
4+echo "${_GREEN}CRONTAB STARTED${_RESET}"
6−echo " UPDATING CRONTAB"
7−echo "#################################"
8
5
6+# Set values in settings script
9
7
10# Remove existing crontab
8# Remove existing crontab
11−echo "Backup existing crontab"
12crontab -l > crontab
9crontab -l > crontab
13
10
14−echo "Removing exiting crontab"
15crontab -r
11crontab -r
16
12
17# Setup users contab
13# Setup users contab
18−crontab -l | { cat; echo "#Start at $_USER_TIMESTART on days $_USER_CRONDAYS
19−0 $_USER_CRONSTART * * $_USER_CRONDAYS $_WORK_DIR/start.sh"; } | crontab -
20
14
21−crontab -l | { cat; echo "#Stop at $_USER_TIMESTOP on days $_USER_CRONDAYS
15+crontab -l | { cat; echo "#Start at $_USER_CRONSTART on days $_USER_CRONDAYS
22−0 $_USER_CRONSTOP * * $_USER_CRONDAYS $_WORK_DIR/stop.sh"; } | crontab -
16+0 $_USER_CRONSTART * * $_USER_CRONDAYS screen -dmS $_XMRIG_SCREEN xmrig --config=$_XMRIG_CONFIG_LOCATION"; } | crontab -
23
17
24−crontab -l
18+crontab -l | { cat; echo "#Stop at $_USER_TIMESTOP on days $_USER_CRONDAYS
19+0 $_USER_CRONSTOP * * $_USER_CRONDAYS screen -S $_XMRIG_SCREEN -X kill"; } | crontab -
25
20
26−echo "#################################"
21+echo "${_CYAN}CRONTAB STOPPED${_RESET}"
27−echo " CRONTAB UPDATED"
28−echo "#################################"
29
22
depends.sh+4−10
@@ -1,23 +1,17 @@
1#!/bin/bash
1#!/bin/bash
2−echo "#################################"
3−echo " INSTALLING DEPENDENCIES "
4−echo "#################################"
5
2
6# Install the software requirements
3# Install the software requirements
7
4
5+echo "${_GREEN}INSTALL DEPENDS STARTED${_RESET}"
6+
8−if [ $_APT_DEPENDS = 1 ]; then
7+if [ "$_APT_DEPENDS" -eq "1" ]; then
9
8
10 # Install xmrig depends
9 # Install xmrig depends
11 sudo apt install -y software-properties-common git build-essential cmake libuv1-dev libssl-dev libmicrohttpd-dev libhwloc-dev gcc g++
10 sudo apt install -y software-properties-common git build-essential cmake libuv1-dev libssl-dev libmicrohttpd-dev libhwloc-dev gcc g++
12
11
13 # Install xmrig-bash-scripts depends
12 # Install xmrig-bash-scripts depends
14 sudo apt install -y jo cpuid screen
13 sudo apt install -y jo cpuid screen
15−else
16−
17− echo "Depend install is set to NO ($_APT_DEPENDS) Skipping"
18
14
19fi
15fi
20
16
21−echo "#################################"
17+echo "${_CYAN}INSTALL DEPENDS STOPPED${_RESET}"
22−echo " DEPENDENCIES INSTALLED "
23−echo "#################################"
functions.sh+98−10
@@ -1,37 +1,125 @@
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 () {
40+
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+
1−build_xmrig () {
45+function build_xmrig () {
2 if [ -d $_XMRIG_BUILD_LOCATION ]; then
46 if [ -d $_XMRIG_BUILD_LOCATION ]; then
3 # Remove existing build directory
47 # Remove existing build directory
4− echo "Found old build directory. Removing"
5 rm -rf $_XMRIG_BUILD_LOCATION
48 rm -rf $_XMRIG_BUILD_LOCATION
6
49
7 # Make new build directory
50 # Make new build directory
8− echo "Creating a build directory"
9 mkdir $_XMRIG_BUILD_LOCATION
51 mkdir $_XMRIG_BUILD_LOCATION
10 else
52 else
11 # Make new build directory
53 # Make new build directory
12− echo "Creating a build directory"
13 mkdir $_XMRIG_BUILD_LOCATION
54 mkdir $_XMRIG_BUILD_LOCATION
14 fi
55 fi
15
56
16 # Change to build directory
57 # Change to build directory
17− echo "Changing to build directory"
18 cd $_XMRIG_BUILD_LOCATION
58 cd $_XMRIG_BUILD_LOCATION
19
59
20 # Configure cmake scafolding
60 # Configure cmake scafolding
21− echo "Configuring cmake scafolding"
61+ cmake ..
22− cmake .. -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7
23
62
24 # Compile the software
63 # Compile the software
25− echo "Starting build"
26 make
64 make
27}
65}
28
66
29
67
30−start_xmrig () {
68+function start_xmrig () {
31 screen -dmS $_XMRIG_SCREEN xmrig --config=$_XMRIG_CONFIG_LOCATION
69 screen -dmS $_XMRIG_SCREEN xmrig --config=$_XMRIG_CONFIG_LOCATION
32}
70}
33
71
34
72
35−stop_xmrig () {
73+function stop_xmrig () {
36 screen -S $_XMRIG_SCREEN -X kill
74 screen -S $_XMRIG_SCREEN -X kill
37}
75}
76+
77+function check_cpu () {
78+ # Check if CPU supports AES-NI
79+ cpuid | grep -i aes > hw-aes.txt
80+ if grep -q true "hw-aes.txt"; then
81+ _AES_NI=true
82+ else
83+ _AES_NI=false
84+ fi
85+ rm hw-aes.txt
86+
87+ # Get number of available CPU Cores
88+ _ENV_CORE=$(nproc --all)
89+
90+ # Get CPU L3 cache value
91+ _ENV_CORE_L3=$(getconf LEVEL3_CACHE_SIZE)
92+}
93+
94+function calc_threads () {
95+ # Each thread needs 2048 byte (2 Megabyte)
96+ # Calculate number of threads supported with L3 cache size
97+
98+ _ENV_THREAD_QTY=$(( ($_ENV_CORE_L3/2048)/1000 ))
99+
100+ # Affine number of threads for _CPU_CN
101+ _COUNTER="$(( $_ENV_THREAD_QTY-1 ))"
102+
103+ _ENV_CPU_THREAD_AFFINITY="$(seq -s " " 0 $_COUNTER)"
104+
105+}
106+
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
122+
123+}
124+
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+38−16
@@ -1,32 +1,56 @@
1#!/bin/bash
1#!/bin/bash
2
2
3−# Get settings
3+
4−. settings.sh
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
24+if sudo grep -q $USER /etc/sudoers.d/README; then
25+ echo -e "User $USER found in /etc/sudoers.d/README. All good!!\n"
26+else
27+ echo -e "$USER does not have passwdles sudo. Fixing that!!\n"
28+ echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/README
29+fi
30+
31+# Load functions
5. functions.sh
32. functions.sh
6−sleep 5
7
33
8−# Stop running instance
34+# Get settings
9−. stop.sh
35+. settings.sh
10
36
11# Update system
37# Update system
12. maintenance.sh
38. maintenance.sh
13−sleep 5
14
39
15# Install dependencies
40# Install dependencies
16. depends.sh
41. depends.sh
17−sleep 5
42+
43+# User input
44+. input.sh
45+
46+# Stop running instance
47+. stop.sh
18
48
19# Get source and build by sourcing our build file
49# Get source and build by sourcing our build file
20. build.sh
50. build.sh
21−sleep 5
22
51
23# Create a config.json
52# Create a config.json
24. config.sh
53. config.sh
25−sleep 5
26−
27−# Setup crontab for user
28−. crontab.sh
29−sleep 5
30
54
31# Unset REPO variable so start script will execute program
55# Unset REPO variable so start script will execute program
32SCREEN=""
56SCREEN=""
@@ -35,6 +59,4 @@ SCREEN=""
35. start.sh
59. start.sh
36
60
37
61
38−echo "####################################"
62+echo -e "${_CYAN}INSTALLATION COMPLETED${_RESET}"
39−echo "# ALL DONE - INSTALLATION COMPLETE #"
40−echo "####################################"
maintenance.sh+3−9
@@ -1,18 +1,12 @@
1#!/bin/bash
1#!/bin/bash
2
2
3−echo "####################################"
3+echo "${_GREEN}MAINTENANCE STARTED${_RESET}"
4−echo "# STARTING SYSTEM MAINTENANCE #"
5−echo "####################################"
6
4
7−if [ $_APT_MAINETANCE = 1 ]; then
5+if [ "$_APT_MAINETANCE" -eq "1" ]; then
8
6
9 sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean
7 sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean
10
8
11−else
12− echo "Apt maintenance is set to NO ($_APT_MAINETANCE) Skipping"
13fi
9fi
14
10
15−echo "####################################"
11+echo "${_CYAN}MAINTENANCE STOPPED${_RESET}"
16−echo "# SYSTEM MAINTENANCE COMPLETE #"
17−echo "####################################"
18
12
settings.sh+87−68
@@ -1,110 +1,130 @@
1#!/bin/bash
1#!/bin/bash
2
2
3−echo "#################################"
4−echo " LOADING SETTINGS "
3+echo -e "${_GREEN}LOADING DEFAULT SETTINGS${_RESET}"
5−echo "#################################"
6
4
7−_EMAIL="miners@prepaidmeters.com"
5+_EMAIL="spam@iko.soy"
8
6
9−_RECEIVE_WALLET="854sqm2Cm4TB2XgPHWqSPSbnFAe3SMzdEDzZHpukQ8NHBPFropbnkFmEKiZPgwjMFC9PTjaFscR2UU6ZwFCqJzGMUiZVbTM"
7+_RECEIVE_WALLET="44FADBDhNRvjJszF5mLS4VCwZ71mY7ftfUErEisPoT724hb5eYuvuFqWthniY8dGPBTcWuBoeLrLJVkxLHCb1Lsd4DdbZzZ"
10
8
11−_POOL_SERVER_URL="192.168.4.5"
9+_POOL_SERVER_URL="xmrpool.eu"
12−_POOL_SERVER_PORT="3333"
10+_POOL_SERVER_PORT="5555"
13
11
12+# Call function
13+show_settings
14+
15+#######################################################################
16+# DO NOT CHANGE AFTER THIS POINT UNLESS YOU KNOW WHAT YOU ARE DOING #
14−#################################
17+#######################################################################
18+
19+_API_ID='null'
20+_API_WORKER_ID="$HOSTNAME"
21+
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"
15
83
16# Set working directory
84# Set working directory
17_WORK_DIR="$(pwd)"
85_WORK_DIR="$(pwd)"
18cd $_WORK_DIR
86cd $_WORK_DIR
19−echo -e "Working directory: $_WORK_DIR\n"
20
87
21# Set repository from which to get the source
88# Set repository from which to get the source
22_XMRIG_REPO="https://github.com/xmrig/xmrig.git"
89_XMRIG_REPO="https://github.com/xmrig/xmrig.git"
23−echo -e "Git source repo: $_XMRIG_REPO\n"
24
90
25# Set name of folder to create when cloning from REPO
91# Set name of folder to create when cloning from REPO
26_XMRIG_CLONE="xmrig-cpu"
92_XMRIG_CLONE="xmrig-cpu"
27−echo -e "Source folder name: $_XMRIG_CLONE\n"
28
93
29# Set clone directory path
94# Set clone directory path
30_XMRIG_CLONE_LOCATION="$_WORK_DIR/$_XMRIG_CLONE"
95_XMRIG_CLONE_LOCATION="$_WORK_DIR/$_XMRIG_CLONE"
31−echo -e "Source folder location: $_XMRIG_CLONE_LOCATION\n"
32
96
33# Set branch from which to build
97# Set branch from which to build
34−_XMRIG_BRANCH="beta"
98+_XMRIG_BRANCH="master"
35−echo -e "Build branch: $_XMRIG_BRANCH\n"
36
99
37# Set build directory
100# Set build directory
38_XMRIG_BUILD="build"
101_XMRIG_BUILD="build"
39−echo -e "Build directory: $_XMRIG_BUILD\n"
40
102
41# Set build directory location
103# Set build directory location
42_XMRIG_BUILD_LOCATION="$_XMRIG_CLONE_LOCATION/$_XMRIG_BUILD"
104_XMRIG_BUILD_LOCATION="$_XMRIG_CLONE_LOCATION/$_XMRIG_BUILD"
43−echo -e "Build directory location: $_XMRIG_BUILD_LOCATION\n"
44
105
45# Set where to install binary
106# Set where to install binary
46_XMRIG_TARGET_LOCATION="/usr/bin/"
107_XMRIG_TARGET_LOCATION="/usr/bin/"
47−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"
48
114
49# Set the config file name
115# Set the config file name
50_XMRIG_CONFIG="config.json"
116_XMRIG_CONFIG="config.json"
51−echo -e "Config file: $_XMRIG_CONFIG\n"
52
117
53# Set config location
118# Set config location
54_XMRIG_CONFIG_LOCATION="$_WORK_DIR/$_XMRIG_CONFIG"
119_XMRIG_CONFIG_LOCATION="$_WORK_DIR/$_XMRIG_CONFIG"
55−echo -e "Config file location: $_XMRIG_CONFIG_LOCATION\n"
56
120
57# Set values for crontab
121# Set values for crontab
58−_USER_CRONSTART="18"
122+_USER_CRONSTART="17"
59−_USER_CRONSTOP="6"
123+_USER_CRONSTOP="8"
60_USER_CRONDAYS="1-5"
124_USER_CRONDAYS="1-5"
61−echo -e "Cron job start: $_USER_CRONSTART\n"
62−echo -e "Cron job stop: $_USER_CRONSTOP\n"
63−echo -e "Cron on days: $_USER_CRONDAYS\n"
64
125
65# Set the name of the screen created by start script
126# Set the name of the screen created by start script
66_XMRIG_SCREEN="xmrig-cpu"
127_XMRIG_SCREEN="xmrig-cpu"
67−echo -e "Screen session name: $_XMRIG_SCREEN\n"
68−
69−# Set that user passwdless sudo
70−#sudo grep $USER /etc/sudoers.d/README
71−
72−if sudo grep -q $USER /etc/sudoers.d/README; then
73− echo -e "User $USER found in /etc/sudoers.d/README. All good!!\n"
74−else
75− echo -e "$USER does not have passwdles sudo. Fixing that!!\n"
76− echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/README
77−fi
78−
79−# Get number of available CPU Cores
80−_ENV_CORE=$(nproc --all)
81−echo -e "CPU Cores: $_ENV_CORE\n"
82−
83−# Check that hugepages set in /etc/sysctl.conf
84−_ENV_CHECK="nr_hugepages"
85−
86−if sudo grep -q $_ENV_CHECK /etc/sysctl.conf; then
87− echo "Found nr_hugepages in /etc/sysctl.conf. All good!!"
88− echo -e "Refreshing sysctl configuration just to be sure.\n"
89− sudo sysctl -p
90−else
91− # Set value in current env
92− echo -e "Did not find nr_hugepages in /etc/sysctl.conf. Fixing that!!\n"
93− sudo sysctl -w vm.nr_hugepages="$_ENV_CORE"
94− sudo sysctl -p
95−
96− # Add value to sysctl
97− echo "vm.nr_hugepages=$_ENV_CORE" | sudo tee -a /etc/sysctl.conf
98−fi
99−
100−# Check if CPU supports AES-NI
101−cpuid | grep -i aes > hw-aes.txt
102−if grep -q true "hw-aes.txt"; then
103− _AES_NI=true
104−else
105− _AES_NI=false
106−fi
107−rm hw-aes.txt
108
128
109# Run apt maintenance
129# Run apt maintenance
110# 1 = yes 0 = no
130# 1 = yes 0 = no
@@ -114,7 +134,6 @@ _APT_MAINETANCE="1"
114# 1 = yes 0 = no
134# 1 = yes 0 = no
115_APT_DEPENDS="1"
135_APT_DEPENDS="1"
116
136
117−echo "#################################"
137+
118−echo " SETTINGS LOADED"
138+echo -e "${_CYAN}DEFAULT SETTINGS LOADED${_RESET}"
119−echo "#################################"
120
139
start.sh+52−30
@@ -1,37 +1,59 @@
1#!/bin/bash
1#!/bin/bash
2
2
3+echo "${_GREEN}MINING STARTED${_RESET}"
4+
3# When this script is:
5# When this script is:
4# * run by crontab, load the settings
6# * run by crontab, load the settings
5# * run by install, do not load settings
7# * run by install, do not load settings
6
8
7−echo "####################################"
9+# Reload settings and functions for when running standalone
8−echo " STARTING "
10+. functions.sh
9−echo "####################################"
11+. settings.sh
10−
12+
11−if [ -z "$_XMRIG_SCREEN" ]; then
12− # Load settings when run by crontab
13− # Also ensures vm.nr_hugepages is set
14− . settings.sh
15− . functions.sh
16−
17− # Check another instance is not already running
18− if ! screen -list | grep -q "$_XMRIG_SCREEN"; then
13+# if ! screen -list | grep -q "$_XMRIG_SCREEN"; then
19− # Call function
14+
15+ # Call functions
16+ show_settings
17+ show_mysettings
20− start_xmrig
18+ # start_xmrig
21− fi
19+
20+ # List screen
21+ # screen -ls
22−else
22+# else
23− # Call function
23+
24− start_xmrig
24+ # List screen
25−
25+ # screen -ls
26− # Unset _XMRIG_SCREEN variable.
26+
27− # The start script will have to load settings on next start
27+# fi
28− $_XMRIG_SCREEN=""
28+echo "[Unit]" | sudo tee /etc/systemd/system/xmrig.service
29−fi
29+echo "Description=XMRIG service" | sudo tee -a /etc/systemd/system/xmrig.service
30−
30+echo "After=network.target" | sudo tee -a /etc/systemd/system/xmrig.service
31−# List screen
31+echo "StartLimitIntervalSec=0" | sudo tee -a /etc/systemd/system/xmrig.service
32−screen -ls
32+echo "[Service]" | sudo tee -a /etc/systemd/system/xmrig.service
33−
33+echo "Type=simple" | sudo tee -a /etc/systemd/system/xmrig.service
34−echo "####################################"
34+echo "Restart=always" | sudo tee -a /etc/systemd/system/xmrig.service
35−echo " STARTED - use screen -r to view "
35+echo "RestartSec=3" | sudo tee -a /etc/systemd/system/xmrig.service
36−echo "####################################"
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}"
37
59
stop.sh+2−10
@@ -4,13 +4,10 @@
4# * run by crontab, load the settings
4# * run by crontab, load the settings
5# * run by install, do not load settings
5# * run by install, do not load settings
6
6
7−echo "#################################"
7+echo "${_GREEN}END MINING STARTED${_RESET}"
8−echo " KILLING SCREEN"
9−echo "#################################"
10
8
11if [ -z "$_XMRIG_SCREEN" ]; then
9if [ -z "$_XMRIG_SCREEN" ]; then
12 # Load settings when run by crontab
10 # Load settings when run by crontab
13− echo "Loading settings and functions"
14 . settings.sh
11 . settings.sh
15 . functions.sh
12 . functions.sh
16
13
@@ -21,10 +18,5 @@ else
21 stop_xmrig
18 stop_xmrig
22fi
19fi
23
20
24−# Check results
21+echo "${_CYAN}END MINING STOPPED${_RESET}"
25−echo "Screen listing"
26−screen -ls
27
22
28−echo "#################################"
29−echo " SCREEN KILLED"
30−echo "#################################"
update.sh+6−16
@@ -1,21 +1,11 @@
1#!/bin/bash
1#!/bin/bash
2
2
3−# Set get xmrig repository and version by sourcing our version file
3+echo "${_GREEN}UPDATE STARTED${_RESET}"
4−. settings.sh
5
4
6−# Kill any current xmrig process
5+git pull
7−. stop.sh
8
6
9−# Get source and build by sourcing our build file
7+# install
10−. build.sh
8+. install.sh
11−
9+sleep 5
12−# Clean users contab
13−crontab -r $USER
14−
15−# Source our start script to start process again in a screen
16−. start.sh
17−
18−echo "####################################"
19−echo "# ALL DONE - UPDATE COMPLETE #"
20−echo "####################################"
21
10
11+echo "${_CYAN}UPDATE COMPLETE${_RESET}"