From 5d0f72b63743a4b86a0bd0b11ec701d0bc208c70 Mon Sep 17 00:00:00 2001 From: Samuel ORTION Date: Fri, 1 Jul 2022 07:26:09 +0200 Subject: [PATCH] Add conf file and better script and installation process --- .gitignore | 1 + Makefile | 12 +++--------- conf/nbmrec.conf | 6 ++++++ conf/nbmrec.service | 4 ++-- conf/nbmrec.timer | 2 +- install.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ src/nbmrec.sh | 27 ++++++++++++++++++--------- 7 files changed, 73 insertions(+), 21 deletions(-) create mode 100644 conf/nbmrec.conf create mode 100755 install.sh diff --git a/.gitignore b/.gitignore index 88bb11a..309e543 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .venv/ +.idea/ \ No newline at end of file diff --git a/Makefile b/Makefile index 97baa0d..471d2fe 100644 --- a/Makefile +++ b/Makefile @@ -4,13 +4,7 @@ run: ./src/nbmrec.sh install: - sudo cp ./src/nbmrec.sh /usr/local/bin/nbmrec.sh - sudo cp ./conf/nbmrec.service /etc/systemd/system/nbmrec.service - sudo cp ./conf/nbmrec.timer /etc/systemd/system/nbmrec.timer - sudo systemctl daemon-reload - sudo systemctl enable nbmrec.timer - + ./install.sh + uninstall: - sudo rm -rf /usr/local/bin/nbmrec.sh - sudo rm -rf /etc/systemd/system/nbmrec.service /etc/systemd/system/nbmrec.timer - sudo systemctl daemon-reload + ./install.sh --uninstall \ No newline at end of file diff --git a/conf/nbmrec.conf b/conf/nbmrec.conf new file mode 100644 index 0000000..7e46ba3 --- /dev/null +++ b/conf/nbmrec.conf @@ -0,0 +1,6 @@ +# NBMrec configuration file +START_TIME=22:00 +END_TIME=06:00 +RECORD_DIR=/mnt/DATA/media/records +PREFIX=nbmrec +VERBOSE=false \ No newline at end of file diff --git a/conf/nbmrec.service b/conf/nbmrec.service index 75b5e01..d87eea5 100644 --- a/conf/nbmrec.service +++ b/conf/nbmrec.service @@ -3,8 +3,8 @@ Description=NBMrec daemon nocturnal bird migration service [Service] Type=oneshot -User=1000 -ExecStart=/usr/local/bin/nbmrec.sh -d night +User= +ExecStart=/usr/local/bin/nbmrec.sh RemainAfterExit=yes [Install] diff --git a/conf/nbmrec.timer b/conf/nbmrec.timer index 2e453a7..7766b0c 100644 --- a/conf/nbmrec.timer +++ b/conf/nbmrec.timer @@ -2,7 +2,7 @@ Description=Record bird migration every night [Timer] -OnCalendar=*-*-* 22:00 +OnCalendar=*-*-* Unit=nbmrec.service [Install] diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..d0fb98c --- /dev/null +++ b/install.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# Install script for NBMrec daemon +# by Samuel ORTION + +install() +{ + START_TIME="22:00" # default start time + sudo cp ./src/nbmrec.sh /usr/local/bin/nbmrec.sh + sudo cp ./conf/nbmrec.service /etc/systemd/system/nbmrec.service + sudo cp ./conf/nbmrec.timer /etc/systemd/system/nbmrec.timer + sudo mkdir -p /usr/local/etc/nbmrec/ + sudo cp ./conf/nbmrec.conf /usr/local/etc/nbmrec/nbmrec.conf + + if [ -f /usr/local/etc/nbmrec/nbmrec.conf ]; then + source /usr/local/etc/nbmrec/nbmrec.conf + fi + + sudo sed -i "s//$USER/g" /etc/systemd/system/nbmrec.service + sudo sed -i "s//$START_TIME/g" /etc/systemd/system/nbmrec.timer + + sudo systemctl daemon-reload + sudo systemctl enable --now nbmrec.timer +} + +uninstall() +{ + sudo systemctl disable --now nbmrec.timer + sudo rm -rf /usr/local/bin/nbmrec.sh + sudo rm -rf /etc/systemd/system/nbmrec.service /etc/systemd/system/nbmrec.timer + sudo rm -rf /usr/local/etc/nbmrec/ + sudo systemctl daemon-reload +} + +# Check if --uninstall is specified +if [ "$1" == "--uninstall" ]; then + uninstall + exit 0 +else + install + exit 0 +fi diff --git a/src/nbmrec.sh b/src/nbmrec.sh index 466ffee..cbaf9ee 100755 --- a/src/nbmrec.sh +++ b/src/nbmrec.sh @@ -6,16 +6,27 @@ RECORD_DIR="/mnt/DATA/media/records" RECORD_DATE=$(date +"%Y-%m-%d") -RECORD_FILENAME=$(date +"%Y%m%d_%H%M%S") -RECORD_FILEPATH="${RECORD_DIR}/${RECORD_DATE}/${RECORD_FILENAME}.wav"  -RECORD_DURATION=60 +PREFIX="nbmrec" +RECORD_FILENAME="${PREFIX}_$(date +"%Y%m%d_%H%M%S").wav" +RECORD_FILEPATH="${RECORD_DIR}/${RECORD_DATE}/${RECORD_FILENAME}"  +START_TIME="22:00" +END_TIME="06:00" +RECORD_DURATION=$(( $(date -d "$END_TIME + 1 day" "+%s") - $(date -d "$START_TIME" "+%s") )) +VERBOSE=false + +# Load conf file if any +if [ -f /usr/local/etc/nbmrec/nbmrec.conf ]; then + source /usr/local/etc/nbmrec.conf +fi + +RECORD_DURATION=$(( $(date -d "$END_TIME + 1 day" "+%s") - $(date -d "$START_TIME" "+%s") )) usage() { echo "Usage: $0 [ -d ] [ -f ]" echo " -d : duration of the recording in seconds or 'night' for all night recording" echo " -f : filename of the recording" echo " -h : display this help" - echo " -v : switch to verbose mode" + echo " -v : switch to VERBOSE mode" } # Get command line options @@ -44,24 +55,22 @@ while getopts ":hd:f:" opt; do esac done -verbose=false - main() { # Create output folder - if $verbose + if $VERBOSE then echo "Creating record output folder" fi mkdir -p "$RECORD_DIR/$RECORD_DATE/" # Perform recording - if $verbose + if $VERBOSE then echo "Recording $RECORD_FILENAME" fi rec -b 16 -r 48000 -c 1 -t wav $RECORD_FILEPATH trim 0 $RECORD_DURATION - if $verbose + if $VERBOSE then echo "Done" fi