#!/bin/bash # Script to check if wifi is connected and start hotspot if not # will also retreive unique RPi ID and store it to deviceID.txt # script that starts at boot: # @reboot /var/www/nebuleair_pro_4g/boot_hotspot.sh >> /var/www/nebuleair_pro_4g/logs/app.log 2>&1 OUTPUT_FILE="/var/www/nebuleair_pro_4g/wifi_list.csv" echo "-------------------" echo "-------------------" echo "NebuleAir pro started at $(date)" chmod -R 777 /var/www/nebuleair_pro_4g/ # Blink GPIO 23 and 24 five times for i in {1..5}; do # Turn GPIO 23 and 24 ON gpioset -b gpiochip0 23=1 24=1 #echo "LEDs ON" sleep 1 # Turn GPIO 23 and 24 OFF gpioset -b gpiochip0 23=0 24=0 #echo "LEDs OFF" sleep 1 done echo "getting RPI serial number" # Get the last 8 characters of the serial number and write to text file serial_number=$(cat /proc/cpuinfo | grep Serial | awk '{print substr($3, length($3) - 7)}') # update Sqlite database echo "Updating SQLite database with device ID: $serial_number" sqlite3 /var/www/nebuleair_pro_4g/sqlite/sensors.db "UPDATE config_table SET value='$serial_number' WHERE key='deviceID';" echo "id: $serial_number" # Get SSH tunnel port from SQLite config_table SSH_TUNNEL_PORT=$(sqlite3 /var/www/nebuleair_pro_4g/sqlite/sensors.db "SELECT value FROM config_table WHERE key='sshTunnel_port'") #need to wait for the network manager to be ready sleep 20 # Get the connection state of wlan0 STATE=$(nmcli -g GENERAL.STATE device show wlan0) # Check if the state is 'disconnected' if [ "$STATE" == "30 (disconnected)" ]; then echo "wlan0 is disconnected." echo "need to perform a wifi scan" # Perform a wifi scan and save its output to a csv file # nmcli device wifi list nmcli -f SSID,SIGNAL,SECURITY device wifi list | awk 'BEGIN { OFS=","; print "SSID,SIGNAL,SECURITY" } NR>1 { print $1,$2,$3 }' > "$OUTPUT_FILE" # Start the hotspot echo "Starting hotspot..." sudo nmcli device wifi hotspot ifname wlan0 ssid nebuleair_pro password nebuleaircfg # Update SQLite to reflect hotspot mode sqlite3 /var/www/nebuleair_pro_4g/sqlite/sensors.db "UPDATE config_table SET value='hotspot' WHERE key='WIFI_status'" else echo "🛜Success: wlan0 is connected!🛜" CONN_SSID=$(nmcli -g GENERAL.CONNECTION device show wlan0) echo "Connection: $CONN_SSID" # Update SQLite to reflect hotspot mode sqlite3 /var/www/nebuleair_pro_4g/sqlite/sensors.db "UPDATE config_table SET value='connected' WHERE key='WIFI_status'" # Lancer le tunnel SSH #echo "Démarrage du tunnel SSH sur le port $SSH_TUNNEL_PORT..." # Start the SSH agent if it's not already running #eval "$(ssh-agent -s)" # Add your SSH private key #ssh-add /home/airlab/.ssh/id_rsa #connections details #REMOTE_USER="airlab_server1" # Remplacez par votre nom d'utilisateur distant #REMOTE_SERVER="aircarto.fr" # Remplacez par l'adresse de votre serveur #LOCAL_PORT=22 # Port local à rediriger #MONITOR_PORT=0 # Désactive la surveillance de connexion autossh #autossh -M "$MONITOR_PORT" -f -N -R "$SSH_TUNNEL_PORT:localhost:$LOCAL_PORT" "$REMOTE_USER@$REMOTE_SERVER" -p 50221 # ssh -f -N -R 52221:localhost:22 -p 50221 airlab_server1@aircarto.fr #ssh -i /var/www/.ssh/id_rsa -f -N -R "$SSH_TUNNEL_PORT:localhost:$LOCAL_PORT" -p 50221 -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_SERVER" #Check if the tunnel was created successfully #if [ $? -eq 0 ]; then # echo "Tunnel started successfully!" #else # echo "Error: Unable to start the tunnel!" # exit 1 #fi fi echo "-------------------"