Files
2025-08-01 05:29:21 -05:00

101 lines
3.3 KiB
Markdown

Here's a concise reference guide for using `curl` to retrieve public IP and device information through various online services. This guide also includes some advanced use cases for integrating these commands into broader workflows.
### Basic Commands
#### **Get Public IP Address**
- **Plain IP Address**:
- Command: `curl ifconfig.me`
- Output: Just your public IP address in plain text.
- **Detailed IP and Connection Info**:
- Command: `curl ipinfo.io/json`
- Output: JSON-formatted details including IP, location, ISP, and more.
#### **Alternative Services**
- **Icanhazip**:
- Command: `curl icanhazip.com`
- Description: Returns the IP address in plain text.
- **Ifconfig.co**:
- Command: `curl ifconfig.co/json`
- Description: Provides detailed JSON output similar to ipinfo.io.
### Advanced Use Cases
#### **1. Logging IP Changes**
Track changes in your public IP address over time, useful for dynamic IP users:
```bash
#!/bin/bash
CURRENT_IP=$(curl -s ifconfig.me)
LOG_FILE="ip_change_log.txt"
if [ ! -f $LOG_FILE ]; then
echo "Starting IP: $CURRENT_IP" > $LOG_FILE
fi
LAST_IP=$(tail -n 1 $LOG_FILE | cut -d ' ' -f 3)
if [ "$CURRENT_IP" != "$LAST_IP" ]; then
echo "$(date): IP changed to $CURRENT_IP" >> $LOG_FILE
fi
```
#### **2. Conditional Actions Based on IP Location**
Perform actions based on the geographical location of your IP:
```bash
#!/bin/bash
IP_INFO=$(curl -s ipinfo.io/json)
COUNTRY=$(echo $IP_INFO | jq -r '.country')
if [ "$COUNTRY" == "US" ]; then
echo "Execute tasks specific to US"
# Add commands here
else
echo "Outside US: actions taken will differ"
# Different commands here
fi
```
#### **3. Combining IP Data with Network Diagnostics**
Combine IP information retrieval with local network diagnostics for comprehensive reports:
```bash
#!/bin/bash
echo "Gathering Network Info..."
PUBLIC_IP=$(curl -s ifconfig.me)
PING_RESULT=$(ping -c 4 example.com)
echo "Public IP: $PUBLIC_IP"
echo "Ping Test Results:"
echo "$PING_RESULT"
```
#### **4. Scheduled IP Check with Notifications**
Use `cron` to schedule regular IP checks and send notifications if the IP changes (Linux):
```bash
# Add this script to cron jobs (crontab -e)
* */6 * * * /path/to/ip_check_script.sh
```
The script could use system notifications or email to alert you to changes.
### Considerations
- **Privacy**: Be cautious with how and where you use these services, as you are revealing your IP to them.
- **Rate Limiting**: Frequent requests to these services may be rate-limited. Use responsibly.
- **Dependence on External Services**: These commands depend on external websites, which might change their output format or availability.
This guide should serve as a comprehensive starting point for both basic and advanced usage of `curl` for IP and network-related tasks. Adjust and expand based on your specific requirements and environment.
```bash
curl -I "https://prod-grants-gov-chatbot.s3.amazonaws.com/extracts/GrantsDBExtract$(date +\%Y\%m\%d)v2.zip"
```
```bash
watch -n 1 'ls -l /home/medusa/grants_extracts/; tail -n 5 /home/medusa/cron.log'
```
```bash
# Simulate running at 03:30 CDT (before release):
TZ="$SERVER_TZ" date -d "2025-08-02 03:30" +%H && ./download_grants.sh
# Should fetch yesterday's file
# Simulate 03:45 CDT (after release):
TZ="$SERVER_TZ" date -d "2025-08-02 03:45" +%H && ./download_grants.sh
# Should fetch today's file
```