如果连接到特定的 wifi 网络,则仅运行 CRON 作业

Her*_*ert 2 cron wireless

我是在 Linux (Lubuntu) 上编写脚本的新手,但我想制作一个脚本,仅当我的笔记本电脑连接到我的家庭 wifi 时才运行 cron 作业。

这可能吗?

我想,我可以用 iwconfig 做一些事情,然后用 grep 从那里拉出 ESSID?

到目前为止,我试过这个,它似乎工作:

#!/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
Run Code Online (Sandbox Code Playgroud)

Jer*_*err 6

我建议无条件运行 cronjob 脚本(即,无论您是否连接到 wifi)。然后脚本本身会检查 wifi 网络,如果您没有连接到正确的网络,则退出。

要检查您连接到哪个网络,我建议使用nmcli. 它会输出如下内容:

[jk@pororo ~]$ nmcli dev wifi列表
SSID BSSID 模式频率信号安全激活  
'other-network' <bssid-1> 基础设施 2412 MHz 54 MB/s 32 WPA WPA2 无      
'some-other-network' <bssid-2> 基础设施 2412 MHz 54 MB/s 25 WEP 无      
'my-network' <bssid-3> 基础设施 2462 MHz 54 MB/s 99 WPA2 是

为了编写脚本,我建议如下:

# 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
Run Code Online (Sandbox Code Playgroud)