first commit
This commit is contained in:
75
boot_hotspot.sh
Executable file
75
boot_hotspot.sh
Executable file
@@ -0,0 +1,75 @@
|
||||
#!/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
|
||||
OUTPUT_FILE="/var/www/nebuleair_pro_4g/wifi_list.csv"
|
||||
JSON_FILE="/var/www/nebuleair_pro_4g/config.json"
|
||||
|
||||
echo "-------------------"
|
||||
echo "-------------------"
|
||||
|
||||
echo "NebuleAir pro started at $(date)"
|
||||
echo "getting SARA R4 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)}')
|
||||
# Define the JSON file path
|
||||
# Use jq to update the "deviceID" in the JSON file
|
||||
jq --arg serial_number "$serial_number" '.deviceID = $serial_number' "$JSON_FILE" > temp.json && mv temp.json "$JSON_FILE"
|
||||
echo "id: $serial_number"
|
||||
#get the SSH port for tunneling
|
||||
SSH_TUNNEL_PORT=$(jq -r '.sshTunnel_port' "$JSON_FILE")
|
||||
|
||||
#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 JSON to reflect hotspot mode
|
||||
jq --arg status "hotspot" '.WIFI_status = $status' "$JSON_FILE" > temp.json && mv temp.json "$JSON_FILE"
|
||||
|
||||
|
||||
else
|
||||
echo "Success: wlan0 is connected!"
|
||||
CONN_SSID=$(nmcli -g GENERAL.CONNECTION device show wlan0)
|
||||
echo "Connection: $CONN_SSID"
|
||||
|
||||
#update config JSON file
|
||||
jq --arg status "connected" '.WIFI_status = $status' "$JSON_FILE" > temp.json && mv temp.json "$JSON_FILE"
|
||||
|
||||
# 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 "-------------------"
|
||||
Reference in New Issue
Block a user