失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 企业微信群机器人每日天气提醒(shell + crontab)

企业微信群机器人每日天气提醒(shell + crontab)

时间:2018-09-05 07:57:50

相关推荐

企业微信群机器人每日天气提醒(shell + crontab)

介绍:

使用 shell 获取当地天气,并调用企业微信机器人发送当天天气情况。

一、新建创建机器人,获取 webhook 地址

准备一个企业微信群,并右键选择「添加群机器人」选择创建群机器人

填写名称后确定,会生成对应的 webhook

二、编写 shell 脚本,获取天气情况

1. 调用天气情况 API

天气 API (需要注册后才能使用)

注册后在用户中心可以查看 APPID 和 APPSecret

# 在终端输入该命令可以测试下curl -s /free/day\?appid\=[替换自己的appid]\&appsecret\=[替换自己的密钥]\&unescape\=1\&cityid\=[城市 ID]

更多请查看 天气 API

响应 JSON

{# 城市 ID"cityid":"10111", # 城市名称"city":"济南",# 更新时间"update_time":"20:55",# 天气"wea":"晴",# 天气 icon"wea_img":"qing",# 实时温度"tem":"11",# 最高气温"tem_day":"17",# 最低气温"tem_night":"7",# 风向"win":"东南风 ",# 风力"win_speed":"1级",# 风速"win_meter":"小于12km/h",# 空气质量"air":"73"}

2. json 返回值解析方法

使用专门的Json解析库: jq - Command-line JSON processor安装,使用系统的包管理器:yum install jq使用curl -s /free/day\?appid\=[替换自己的appid]\&appsecret\=[替换自己的密钥]\&unescape\=1\&cityid\=[城市 ID] | jq

取对应值

| jq -r ‘.[key]’

curl -s /free/day\?appid\=[替换自己的appid]\&appsecret\=[替换自己的密钥]\&unescape\=1\&cityid\=[城市 ID] | jq -r '.wea'

3. shell 脚本思路

将 curl 获取天气结果返回值赋值给变量

RESULT=$(curl -s /free/day\?appid\=[替换自己的appid]\&appsecret\=[替换自己的密钥]\&unescape\=1\&cityid\=[城市 ID])

使用 jq 获取自己需要的天气信息

# 输出天气情况WEATHER=$(echo $RESULT | jq -r '.wea')# 输出温度 e.g:3➖-7TEMP=$(echo $RESULT | jq -r '.tem_day')"➖"$(echo $RESULT | jq -r '.tem_night')# 输出风向和风力 西南风,1级WIN=$(echo $RESULT | jq -r '.win')","$(echo $RESULT | jq -r '.win_speed')# 输出空气质量AIR=$(echo $RESULT | jq -r '.air')

使用 curl 推送消息给微信群

curl '你的 webhook'\-H 'Content-Type: application/json' \-d "{\"msgtype\":\"markdown\",\"markdown\":{\"content\": \" 具体信息\"}}"

4. 完整 shell 脚本

RESULT=$(curl -s /free/day\?appid\=[替换自己的appid]\&appsecret\=[替换自己的密钥]\&unescape\=1\&cityid\=[城市 ID])# 输出天气情况WEATHER=$(echo $RESULT | jq -r '.wea')TEMP=$(echo $RESULT | jq -r '.tem_day')"➖"$(echo $RESULT | jq -r '.tem_night')WIN=$(echo $RESULT | jq -r '.win')","$(echo $RESULT | jq -r '.win_speed')AIR=$(echo $RESULT | jq -r '.air')#这里做了些天气判断,根据情况输出不同的信息if [ $WEATHER == "晴" ] ; thenINFO='今日天气:'$WEATHER'☀️ ,今天有阳光,午休时间可以去散散步~'elif [ $WEATHER == "云" ] || [ $WEATHER == "多云" ];thenINFO='今日天气:'$WEATHER'☁️ ,多出门呼吸新鲜空气哟~'elif [ $WEATHER == "阴" ] || [ $WEATHER == "多云转阴" ];thenINFO='今日天气:'$WEATHER'⛅ ,今天是阴天,但心情不要是阴天'elif [ $WEATHER == "雨" ] || [ $WEATHER == "小雨" ] || [ $WEATHER == "中雨" ] || [ $WEATHER=="大雨"];thenINFO='今日天气:'$WEATHER'🌧️ ,今天有雨,记得带伞'elseINFO='今日天气:'$WEATHER'⭐,新的一天开始了'fi# 格式可用 text 和 markdowncurl '自己的 webhook'\-H 'Content-Type: application/json' \-d "{\"msgtype\":\"markdown\",\"markdown\":{\"content\": \"$INFO \\n >温度: $TEMP \\n >风力: $WIN \\n >空气质量: $AIR\"}}"

三、crontab 定时执行

写定时任务命令行crontab -e全局打开定时任务sudo crontab -e查看所有定时任务crontab -lcrontab 格式:

* * * * * command to execute│ │ │ │ ││ │ │ │ └─── 一周的星期几 (0 - 6) (0 - 6 周天到周六, 0、和 7 是星期天)│ │ │ └──────── 月 (1 - 12)│ │ └───────────── 天 (1 - 31)│ └────────────────── 小时 (0 - 23)└─────────────────────── 分钟 (0 - 59)

每天十点执行汇报天气

0 10 * * * cd ~ && ./test.sh# 分 时 天 月 周 定位到 shell 脚本位置 && 执行 shell 脚本

四、输出展示

今日天气:晴☀️ ,今天有阳光,午休时间可以去散散步~

温度: 4➖-8

风力: 西南风,3级

空气质量: 20

五、遇到的问题

crontab 不执行

可能是因为,shell 脚本权限不足

chmod u+x [ shell 脚本 ]

后续有其他问题再做补充

如果觉得《企业微信群机器人每日天气提醒(shell + crontab)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。