106 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # Load environment variables
 | |
| source "$(dirname "$0")/config.env"
 | |
| 
 | |
| # ---------------- Get Current IP Info ----------------
 | |
| INFO=$(curl -s https://ipv4.am.i.mullvad.net/json | jq)
 | |
| IP=$(echo "$INFO" | jq -r '.ip')
 | |
| ORG=$(echo "$INFO" | jq -r '.organization')
 | |
| 
 | |
| # ---------------- Iperf3 Test ----------------
 | |
| if [ "$IPERF3" -eq 1 ]; then
 | |
|   echo "Running iperf3 test..."
 | |
|   IPERF_UP=$(iperf3 -R -c "$IPERF3_SERVER_IP" -J)
 | |
|   if [ -z "$IPERF_UP" ] || [[ "$IPERF_UP" == *"error"* ]]; then
 | |
|     echo "Iperf3 test failed"
 | |
|     exit 1
 | |
|   fi
 | |
| 
 | |
|   IPERF_DOWN=$(iperf3 -c "$IPERF3_SERVER_IP" -J)
 | |
|   if [ -z "$IPERF_DOWN" ] || [[ "$IPERF_DOWN" == *"error"* ]]; then
 | |
|     echo "Iperf3 test failed"
 | |
|     exit 1
 | |
|   fi
 | |
| 
 | |
|   DOWNLOAD=$(echo "$IPERF_UP" | jq -r '.end.sum_received.bits_per_second')
 | |
|   UPLOAD=$(echo "$IPERF_DOWN" | jq -r '.end.sum_sent.bits_per_second')
 | |
| 
 | |
|   DOWNLOAD_Mbps=$(awk "BEGIN { printf \"%.1f\", $DOWNLOAD / (1024*1024) }")
 | |
|   UPLOAD_Mbps=$(awk "BEGIN { printf \"%.1f\", $UPLOAD / (1024*1024) }")
 | |
| 
 | |
|   if [ "$log" -eq 1 ]; then
 | |
|     echo "$(date +"%Y-%m-%d %H:%M:%S"),$WAN,iperf3,$ORG,$IP,$DOWNLOAD_Mbps Mbps,$UPLOAD_Mbps Mbps" >> "$LOG_FILE"
 | |
|   fi
 | |
| 
 | |
|   if [ "$DISCORD" -eq 1 ]; then
 | |
|     curl -H "Content-Type: application/json" -X POST --data @- "$WEBHOOK_URL" <<EOF
 | |
| {
 | |
|   "embeds": [{
 | |
|     "title": "Iperf3 Result - WAN $WAN",
 | |
|     "color": 5814783,
 | |
|     "fields": [
 | |
|       {"name": "Date", "value": "$(date +'%Y-%m-%d %H:%M:%S')"},
 | |
|       {"name": "Server", "value": "$IPERF3_SERVER_IP"},
 | |
|       {"name": "ISP", "value": "$ORG"},
 | |
|       {"name": "IP", "value": "$IP"},
 | |
|       {"name": "Download", "value": "$DOWNLOAD_Mbps Mbps"},
 | |
|       {"name": "Upload", "value": "$UPLOAD_Mbps Mbps"}
 | |
|     ]
 | |
|   }]
 | |
| }
 | |
| EOF
 | |
|   fi
 | |
| 
 | |
|   if [ "$INFLUX" -eq 1 ]; then
 | |
|     influx --database="$INFLUXDB_NAME" --host="$INFLUXDB_HOST" \
 | |
|       --execute="INSERT $INFLUXDB_NAME,wan=$WAN,test_type=iperf3,isp=$ORG,ip=$IP download=$DOWNLOAD_Mbps,upload=$UPLOAD_Mbps"
 | |
|   fi
 | |
| fi
 | |
| 
 | |
| # ---------------- Speedtest-cli Test ----------------
 | |
| if [ "$SPEEDTESTCLI" -eq 1 ]; then
 | |
|   echo "Running speedtest-cli..."
 | |
|   SPEEDTEST=$(speedtest-cli --csv)
 | |
|   if [ -z "$SPEEDTEST" ] || [[ "$SPEEDTEST" == *"ERROR"* ]]; then
 | |
|     echo "Speedtest failed"
 | |
|     exit 1
 | |
|   fi
 | |
| 
 | |
|   PING=$(echo "$SPEEDTEST" | awk -F',' '{print $6}')
 | |
|   DOWNLOAD=$(echo "$SPEEDTEST" | awk -F',' '{print $7}')
 | |
|   UPLOAD=$(echo "$SPEEDTEST" | awk -F',' '{print $8}')
 | |
| 
 | |
|   DOWNLOAD_Mbps=$(awk "BEGIN { printf \"%.1f\", $DOWNLOAD / (1024*1024) }")
 | |
|   UPLOAD_Mbps=$(awk "BEGIN { printf \"%.1f\", $UPLOAD / (1024*1024) }")
 | |
| 
 | |
|   if [ "$log" -eq 1 ]; then
 | |
|     echo "$(date +"%Y-%m-%d %H:%M:%S"),$WAN,Speedtest.net,$ORG,$IP,$DOWNLOAD_Mbps Mbps,$UPLOAD_Mbps Mbps" >> "$LOG_FILE"
 | |
|   fi
 | |
| 
 | |
|   if [ "$DISCORD" -eq 1 ]; then
 | |
|     curl -H "Content-Type: application/json" -X POST --data @- "$WEBHOOK_URL" <<EOF
 | |
| {
 | |
|   "embeds": [{
 | |
|     "title": "Speedtest.net Result - WAN $WAN",
 | |
|     "color": 5814783,
 | |
|     "fields": [
 | |
|       {"name": "Date", "value": "$(date +'%Y-%m-%d %H:%M:%S')"},
 | |
|       {"name": "ISP", "value": "$ORG"},
 | |
|       {"name": "IP", "value": "$IP"},
 | |
|       {"name": "Ping", "value": "$PING ms"},
 | |
|       {"name": "Download", "value": "$DOWNLOAD_Mbps Mbps"},
 | |
|       {"name": "Upload", "value": "$UPLOAD_Mbps Mbps"}
 | |
|     ]
 | |
|   }]
 | |
| }
 | |
| EOF
 | |
|   fi
 | |
| 
 | |
|   if [ "$INFLUX" -eq 1 ]; then
 | |
|     influx --database="$INFLUXDB_NAME" --host="$INFLUXDB_HOST" \
 | |
|       --execute="INSERT $INFLUXDB_NAME,wan=$WAN,test_type=speedtest.net,isp=$ORG,ip=$IP download=$DOWNLOAD_Mbps,upload=$UPLOAD_Mbps"
 | |
|   fi
 | |
| fi
 | |
| 
 |