Só executa o trabalho CRON se estiver conectado a uma rede wifi específica

2

Eu sou um novato em criação de scripts no Linux (Lubuntu), mas gostaria de criar um script que execute um cron somente se meu laptop estiver conectado ao meu wifi doméstico.

Isso é possível?

Eu acho que eu poderia fazer algo com o iwconfig e puxar o ESSID de lá com o grep?

Até agora, eu tentei isso e parece funcionar:

#!/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
    
por Herbert 13.06.2012 / 23:30

3 respostas

6

Eu sugeriria executar um script de cronjob incondicionalmente (ou seja, independentemente de você estar ou não conectado ao wifi). O próprio script, em seguida, iria verificar a rede wifi e sair se você não estiver conectado ao caminho certo.

Para verificar em qual rede você está conectado, sugiro usar nmcli . Ele irá mostrar algo como:

[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

Para fazer isso, sugiro algo como:

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

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

# now we know we're connected to my-network
    
por Jeremy Kerr 14.06.2012 / 02:56
2

Com base no seu trabalho, estou usando o seguinte no meu script:

# Check if we are home
essid='nmcli con status|grep <ESSID>|awk '{print }''
[ "$essid" = "<ESSID>" ] || exit
    
por Emiel 24.09.2012 / 17:01
0

No Ubuntu 16.10 Yakkety, ferramenta nmcli versão 1.2.4, a saída parece diferente. Acabei usando o seguinte:

essid=$(nmcli dev wifi list | tail -n +2 | sed -n -e /^*/p | awk -F ' ' '{print }')
[ "$essid" == "<ESSID>" ] || exit
    
por Anthony Kitchin 02.02.2017 / 00:00