#!/bin/bash ################################################################################# # Copyright 2017 Dell Inc. # Chad Young # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software distributed under the License # is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express # or implied. See the License for the specific language governing permissions and limitations under # the License. # # Version 3 ################################################################################# clear echo "Shutting down any running MongoDB" # Verify all the processes of Mongo are stopped killpid=`sudo netstat -ntlp | grep mongod | awk '{print $7}' | sed 's/\/.*//'` #echo This is the pid that needs to die: $killpid sudo kill -9 $killpid sudo netstat -tulnp | grep mongod echo "Stopped MongoDB and pausing for 5 seconds" sleep 5s clear # The user must define this path # Full path dbpath="/home/tester/edgex/db" # Short path - no"/db/" dirname="/home/tester/edgex" echo echo "This script will do the following:" echo "-- Ask you to supply a user name (consider \"\" in /home/) " echo "-- Ask you to supply a password" echo "---- The username and password are needed to set folder ownership." echo "---- This username will not be the same username used for mongodb." echo "---- The mongodb username will be supplied in the init_mongo.js file." echo "-- Create folders, if necessary, for the database." echo "-- Start database creation (without --auth). " echo "-- Initialize the database for Edgex." echo "-- Shutdown the database." echo "-- Verify all processes of Mongo are stopped." echo "-- Start the database again (using --auth). " echo echo # Confirm the database folder location echo "Should the folder for the database be created here: $dbpath " echo echo "Choose a number for your answer" select yn in "Yes" "No"; do case $yn in Yes ) break;; No ) echo; echo "Program exit. Edit the top of this shell file and run again"; exit;; esac done # Ask for a user name echo echo "What is the non-root user name who will own the folders where the database will be stored:" echo # read the non-root user name read name echo # Ask for a user name password echo echo "What is the non-root user name password:" echo # read the non-root user name password read passwd # Confirm the user name echo "Is this what you meant to write: $name and $passwd " echo echo "Choose a number for your answer" select yn in "Yes" "No"; do case $yn in Yes ) break;; No ) echo; echo "progam exit, rerun again"; exit;; esac done # folder creation and change ownership echo "Checking to see if $dbpath exist?" echo if [ ! -d $dbpath ] then echo echo "The folder doesn't exist. " echo echo "Now creating $dbpath" sudo mkdir -p $dbpath echo echo "Folder created" echo echo "Changing the file owner to $name" sudo chown -R $name:$name $dirname echo echo "File owner changed" echo echo "Folder creation is complete, moving to next step" echo else echo "File exists -> moving to next step" echo fi echo "Starting MongoDB with no auth" # Start the database creation (without --auth) gnome-terminal -x bash -c "sudo nohup mongod --dbpath $dbpath" echo echo "Sleeping for 30 seconds" sleep 30s # Initialize the database for edgex gnome-terminal -x bash -c "sudo nohup mongo < init_mongo.js" echo echo "Initialize the database and sleep for 10 seconds" sleep 10s # Shutdown the database gnome-terminal -x bash -c "sudo nohup mongod --dbpath $dbpath --shutdown " #echo echo "Shutting down the database and sleep for 10 seconds" sleep 10s # Change the owner of the DB dir sudo chown -R mongodb:mongodb $dirname # Make changes to the DB sudo sed -i 's/dbpath=\/var\/lib\/mongodb/dbpath=\/home\/tester\/edgex\/db/' /etc/mongodb.conf # Turn on authentication sudo sed -i 's/\#auth/auth/' /etc/mongodb.conf echo "Setup is complete - PLEASE REBOOT THE SYSTEM"