Запускать CRON только при подключении к определенной сети Wi-Fi

Я новичок в написании сценариев в Linux (Lubuntu), но я хотел бы создать сценарий, который запускает работу cron, только если мой ноутбук подключен к моему домашнему Wi-Fi.

Возможно ли это?

Полагаю, я мог бы что-то сделать с iwconfig и вытащить ESSID оттуда с помощью grep?

Пока я пробовал это, и похоже, что это работает: 114]

#!/bin/bash
# CRON, connected to specific WIFI
clear
netid=HOFF216
if iwconfig | grep $netid
then 
    clear   
    echo "True, we are connected to $netid"
    rsync ...........
else
    clear       
    echo "False, we are not connected to $netid"
fi
2
задан 15 June 2012 в 19:22

3 ответа

Я бы предложил запустить скрипт cronjob безоговорочно (то есть независимо от того, подключены ли вы к Wi-Fi или нет). Сам скрипт затем проверит сеть Wi-Fi и завершит работу, если вы не подключены к нужной сети.

Чтобы проверить, к какой сети вы подключены, я бы предложил использовать nmcli. Он выведет что-то вроде:

[jk@pororo ~]$ nmcli dev wifi list
SSID                              BSSID       MODE             FREQ       RATE       SIGNAL   SECURITY   ACTIVE  
'other-network'                   <bssid-1>   Infrastructure   2412 MHz   54 MB/s    32       WPA WPA2   no      
'some-other-network'              <bssid-2>   Infrastructure   2412 MHz   54 MB/s    25       WEP        no      
'my-network'                      <bssid-3>   Infrastructure   2462 MHz   54 MB/s    99       WPA2       yes

Чтобы написать это, я бы предложил что-то вроде:

# extract the essid from nmcli output
essid=$(nmcli dev wifi list | sed -n "s/^'\([^']*\)'.*yes\s*$/\1/p")

# check for my-network, exit otherwise
[ "$essid" == "my-network" ] || exit

# now we know we're connected to my-network
0
ответ дан 15 June 2012 в 19:22

Исходя из вашей работы, я теперь использую в своем сценарии следующее:

# Check if we are home
essid=`nmcli con status|grep <ESSID>|awk '{print $1}'`
[ "$essid" = "<ESSID>" ] || exit
0
ответ дан 15 June 2012 в 19:22

В Ubuntu 16.10 Yakkety, версия инструмента 1.2c nmcli, вывод выглядит иначе. Я закончил тем, что использовал следующее:

essid=$(nmcli dev wifi list | tail -n +2 | sed -n -e /^*/p | awk -F ' ' '{print $2}')
[ "$essid" == "<ESSID>" ] || exit
0
ответ дан 15 June 2012 в 19:22

Другие вопросы по тегам:

Похожие вопросы: