65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # Replace 'your_fqdn_here.com' with the actual FQDN you want to update
 | |
| fqdn="your_fqdn_here.com"
 | |
| 
 | |
| # Path to the log file where the IP address will be recorded
 | |
| log_file="/path/to/ip_log.txt"
 | |
| 
 | |
| # Function to resolve the IP address from FQDN
 | |
| get_ip_address() {
 | |
|     dig +short $fqdn
 | |
| }
 | |
| 
 | |
| # Function to get the last recorded IP address from the log file
 | |
| get_last_ip_address() {
 | |
|     if [[ -f "$log_file" ]]; then
 | |
|         tail -n 1 "$log_file"
 | |
|     else
 | |
|         echo ""
 | |
|     fi
 | |
| }
 | |
| 
 | |
| # Check if 'ufw' is installed
 | |
| if ! command -v ufw &> /dev/null; then
 | |
|     echo "UFW is not installed. Please install it first."
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| # Check if 'dig' (from 'dnsutils') is installed
 | |
| if ! command -v dig &> /dev/null; then
 | |
|     echo "The 'dnsutils' package is not installed. Please install it first."
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| # Enable UFW if it's not already enabled
 | |
| ufw --force enable
 | |
| 
 | |
| # Get the current and last recorded IP addresses
 | |
| current_ip=$(get_ip_address)
 | |
| last_ip=$(get_last_ip_address)
 | |
| 
 | |
| if [[ -z $current_ip ]]; then
 | |
|     echo "Unable to resolve the IP address for '$fqdn'."
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| if [[ $current_ip != $last_ip ]]; then
 | |
|     # Remove the old IP address from UFW rules if it exists
 | |
|     if [[ -n $last_ip ]]; then
 | |
|         ufw delete allow from $last_ip
 | |
|     fi
 | |
| 
 | |
|     # Allow traffic from the obtained IP address
 | |
|     ufw allow from $current_ip
 | |
|     ufw reload
 | |
| 
 | |
|     # Log the current IP address to the file
 | |
|     echo "$current_ip" >> "$log_file"
 | |
|     
 | |
|     echo "UFW has been updated to allow traffic from $fqdn ($current_ip)."
 | |
| else
 | |
|     echo "IP address for '$fqdn' has not changed. No updates needed."
 | |
| fi
 | |
| 
 |