Fix user creating error. Ensuring user exists
This commit is contained in:
48
Makefile
48
Makefile
@@ -1,37 +1,39 @@
|
|||||||
PROJECT := certificate-expire-check
|
PROJECT := certificate-expire-check
|
||||||
USER := $(PROJECT)
|
USER := $(PROJECT)
|
||||||
INSTALL_DIR := /etc/$(PROJECT)
|
INSTALL_DIR := /etc/$(PROJECT)
|
||||||
CONF_DIR := $(INSTALL_DIR)/conf
|
SCRIPT := $(INSTALL_DIR)/main.py
|
||||||
SCRIPT := $(INSTALL_DIR)/main.py
|
CRON_SCHEDULE := 0 0 */10 * *
|
||||||
CRON_SCHEDULE:= 0 0 */10 * *
|
|
||||||
|
|
||||||
.PHONY: all user install cron clean
|
.PHONY: all user install cron clean
|
||||||
|
|
||||||
all: user install cron
|
all: install cron
|
||||||
|
|
||||||
user:
|
user:
|
||||||
@id -u $(USER) &>/dev/null || \
|
@echo "==> Ensuring user '$(USER)' exists…"
|
||||||
sudo useradd --system --no-create-home --shell /usr/sbin/nologin $(USER) && \
|
@sudo getent passwd $(USER) > /dev/null 2>&1 || \
|
||||||
echo "User '$(USER)' has been created."
|
( sudo useradd --system --no-create-home --shell /usr/sbin/nologin $(USER) && \
|
||||||
@echo "User '$(USER)' already exists - skip it."
|
echo "User '$(USER)' created." )
|
||||||
|
@echo "User '$(USER)' ready."
|
||||||
|
|
||||||
# Copy the project to /etc and set permissions
|
|
||||||
install: user
|
install: user
|
||||||
sudo mkdir -p $(INSTALL_DIR)
|
@echo "==> Installing project to $(INSTALL_DIR)…"
|
||||||
sudo cp -r ./* $(INSTALL_DIR)
|
@sudo mkdir -p $(INSTALL_DIR)
|
||||||
sudo chown -R $(USER):$(USER) $(INSTALL_DIR)
|
@sudo cp -r ./* $(INSTALL_DIR)
|
||||||
@echo "The project is installed in $(INSTALL_DIR) and permissions are assigned to user '$(USER)'."
|
@sudo chown -R $(USER):$(USER) $(INSTALL_DIR)
|
||||||
|
@echo "Installed and chown → $(USER):$(USER)."
|
||||||
|
|
||||||
# Add a cron job as a user
|
|
||||||
cron: install
|
cron: install
|
||||||
@CRON_LINE="$(CRON_SCHEDULE) /usr/bin/python3 $(SCRIPT) >> /var/log/$(PROJECT).log 2>&1"
|
@echo "==> Configuring cron job…"
|
||||||
# add CRON_LINE in user crontab if not exists
|
@CRON_LINE="$(CRON_SCHEDULE) $(USER) /usr/bin/python3 $(SCRIPT) >> /var/log/$(PROJECT).log 2>&1"
|
||||||
@sudo crontab -u $(USER) -l 2>/dev/null | grep -F "$$CRON_LINE" >/dev/null || \
|
@sudo crontab -u $(USER) -l 2>/dev/null | grep -F "$$CRON_LINE" \
|
||||||
( sudo crontab -u $(USER) -l 2>/dev/null; echo "$$CRON_LINE" ) | sudo crontab -u $(USER) -
|
|| ( sudo crontab -u $(USER) -l 2>/dev/null; echo "$$CRON_LINE" ) \
|
||||||
@echo "Cron entry for user '$(USER)' is set: $$CRON_LINE"
|
| sudo crontab -u $(USER) -
|
||||||
|
@echo "Cron line for '$(USER)':"
|
||||||
|
@echo " $$CRON_LINE"
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@echo "==> Cleaning up…"
|
||||||
-sudo crontab -u $(USER) -r
|
-sudo crontab -u $(USER) -r
|
||||||
-sudo userdel $(USER)
|
-sudo userdel $(USER)
|
||||||
-sudo rm -rf $(INSTALL_DIR)
|
-sudo rm -rf $(INSTALL_DIR)
|
||||||
@echo The cleanup is complete."
|
@echo "Cleanup done."
|
||||||
|
|||||||
Reference in New Issue
Block a user