From 070c1c6d0e57045b1b796c1cbb8594354be77dec Mon Sep 17 00:00:00 2001 From: Adil Sadqi Date: Mon, 30 Sep 2024 20:21:42 +0000 Subject: [PATCH] Add auto connection --- auto connection | 72 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 auto connection diff --git a/auto connection b/auto connection new file mode 100644 index 0000000..77d25fd --- /dev/null +++ b/auto connection @@ -0,0 +1,72 @@ +Script Breakdown: +Check Internet: Pings Google's DNS (8.8.8.8) to verify the connection. +Scan Wi-Fi: Scans available Wi-Fi networks using iw dev radio2 scan. +Attempt Connections: Tries to connect to each SSID using its MAC address as the password. +Notify on Success: If successful, sends a notification via NTFY with the SSID and the used MAC address as the password. +Script: +bash +Copy code: +--------- + +#!/bin/sh + +# Check if there is an internet connection +if ! ping -c 3 8.8.8.8 > /dev/null 2>&1; then + # Scan for available Wi-Fi networks using radio2 + iw dev radio2 scan | grep "SSID\|BSSID" | while read -r line; do + if echo "$line" | grep "SSID" > /dev/null; then + ssid=$(echo "$line" | cut -d ":" -f2 | sed 's/^ *//g') + elif echo "$line" | grep "BSSID" > /dev/null; then + bssid=$(echo "$line" | cut -d ":" -f2- | sed 's/://g' | tr 'a-z' 'A-Z') + # Try to connect to the SSID using the BSSID as password + uci set wireless.@wifi-iface[1].ssid="$ssid" + uci set wireless.@wifi-iface[1].key="$bssid" + uci set wireless.@wifi-iface[1].encryption='psk2' + uci commit wireless + wifi down radio2 && wifi up radio2 + sleep 30 # Wait for connection + + # Check if the router has internet access + if ping -c 3 8.8.8.8 > /dev/null 2>&1; then + # Send a notification via NTFY + curl -d "Connected to SSID: $ssid with password: $bssid" https://ntfy.asadqi.eu.org/Router + sleep 300 # Wait for 5 minutes before retrying + exit 0 + fi + fi + done +fi + + +------------ + +Explanation: +Internet Check: The script first pings 8.8.8.8. If it fails, it proceeds to scan for available SSIDs. +Wi-Fi Scan: It uses iw dev radio2 scan to list all available SSIDs and BSSIDs (MAC addresses). +Connect Attempt: For each SSID, it sets the SSID and uses the MAC address (without : and in uppercase) as the password. It commits these settings, brings down the radio, and brings it back up to apply the new settings. +Wait and Check: After 30 seconds, it checks if the connection is successful by pinging 8.8.8.8 again. If successful, it sends a notification with the SSID and password via NTFY. +Retry: If the connection fails, it continues with the next SSID. +Cron Job to Run Every 30 Minutes: +To schedule this script to run every 30 minutes, add the following line to your Scheduled Tasks in the OpenWRT GUI: + +bash +Copy code: +--------- + +*/30 * * * * /usr/bin/wifi_connect.sh + +------------ + +How to Apply: +Save the Script: Save the above script as /usr/bin/wifi_connect.sh: + +bash +Copy code +nano /usr/bin/wifi_connect.sh +chmod +x /usr/bin/wifi_connect.sh +Set the Cron Job: + +Go to System -> Scheduled Tasks in the OpenWRT GUI. +Add the cron line: */30 * * * * /usr/bin/wifi_connect.sh +Click Save & Apply. +This setup will run the script every 30 minutes to check for internet, scan SSIDs, and attempt to connect using the MAC address as the password. \ No newline at end of file