From 361c9759fa321ddc17d74404de9e304e6db71216 Mon Sep 17 00:00:00 2001 From: Reza Behzadan Date: Tue, 6 Feb 2024 08:28:06 +0330 Subject: [PATCH] Update README.md for setup.sh integration --- README.md | 106 ++++++++++++++++-------------------------------------- 1 file changed, 30 insertions(+), 76 deletions(-) diff --git a/README.md b/README.md index d8aa54c..dc375a1 100644 --- a/README.md +++ b/README.md @@ -1,96 +1,50 @@ # GeoIP Database Updater Script -This script, automates the process of checking for new releases of GeoIP -databases on GitHub, downloading them if they're not already present, and -updating the local database files for use. +This guide provides instructions on how to automate the process of checking for +new releases of GeoIP databases on GitHub, downloading them if they're not +already present, and updating the local database files for use with the +`geoip_updater.sh` script. ## Prerequisites -Ensure `wget` and `curl` are installed on your system. +Before proceeding, ensure that `wget` and `curl` are installed on your system, +as they are required for the script to download files and check URLs. ## Setup Instructions -### 1. Create the Destination Directory +### Using `setup.sh` Script -```bash -sudo mkdir -p /usr/local/share/GeoIP -``` +1. **Execute `setup.sh` as Normal User**: + - Run the setup script as a normal user **without** sudo privileges to perform operations like creating directories, changing permissions, and editing the crontab. It will ask you for the password when needed. + ```bash + ./setup.sh + ``` + - This approach ensures that the crontab entries are added to the current user's crontab, not the root's crontab. -### 2. Create a Group for GeoIP Users +2. **Verify Crontab Entry**: + - After running `setup.sh`, verify that the crontab entries have been added correctly by listing the current user's crontab: + ```bash + crontab -l + ``` + - You should see three new entries for running `geoip_updater.sh` with specific dates. -Create a group to manage access to the GeoIP data. -```bash -sudo groupadd geoipusers -``` -**Note: Log out and back in for the group change to take effect.** +## Manual Execution -### 3. Set Permissions and Ownership - -Change the group ownership of the `/usr/local/share/GeoIP` directory to -`geoipusers`, and set the appropriate permissions. - -```bash -sudo chown :geoipusers /usr/local/share/GeoIP -sudo chmod 775 /usr/local/share/GeoIP -``` - -### 4. Add Your User to the GeoIP Users Group - -Add your user account to the `geoipusers` group to allow script execution and -access to the GeoIP directory. - -```bash -sudo usermod -a -G geoipusers $USER -``` - -*Note: You may need to log out and log back in for the group changes to take effect.* - -### 5. Install the Script - -Copy the script to a globally accessible location and ensure it is executable: - -```bash -sudo cp geoip_updater.sh /usr/local/bin/ -sudo chown :geoipusers /usr/local/bin/geoip_updater.sh -sudo chmod +x /usr/local/bin/geoip_updater.sh -``` - -### 6. Schedule the Script in Crontab - -Edit your crontab to run the script automatically: - -```bash -crontab -e -``` - -Add the following line to schedule the script to run daily at 2 AM: - -```bash -0 2 * * * /usr/local/bin/geoip_updater.sh >> /var/log/geoip_update.log 2>&1 -``` - -### 7. Prepare the Log File - -Make sure the script can write to the log file: - -```bash -sudo touch /var/log/geoip_update.log -sudo chown :geoipusers /var/log/geoip_update.log -sudo chmod 664 /var/log/geoip_update.log -``` - -## Running the Script - -The script will run as scheduled in the crontab. You can also execute it -manually at any time: +After setup, the `geoip_updater.sh` script will run automatically according to the schedule set in the crontab. However, you can also run the script manually at any time by executing: ```bash /usr/local/bin/geoip_updater.sh ``` +Optionally, you can specify a date as an argument to manually check and download the database for a specific date: + +```bash +/usr/local/bin/geoip_updater.sh YYYY-MM-DD +``` + ## Troubleshooting -- Ensure the script is executable and the `/var/log/geoip_update.log` file is writable. -- Verify the crontab entry if the script does not run as expected. -- Check the log file `/var/log/geoip_update.log` for errors if the script fails. +- If the script does not run as scheduled, ensure that the `crontab` entries are set correctly and that `geoip_updater.sh` is executable. +- Check the log file `/var/log/geoip_update.log` for any errors or messages output by the script. +