Fix user creating error. Ensuring user exists

This commit is contained in:
2025-05-11 16:24:40 +03:00
parent ab2a77716f
commit c7fdd60fe7

View File

@@ -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."