shell脚本 用户登录服务器发送钉钉提醒
一.企业微信配置
1.获取AgentId(AppID)、Secret 、CropID、部门ID
创建一个企业微信应用获取到AgentId(AppID)、Secret

2.获取CropID,点击 “我的企业“ --“企业信息”

3.获取部门ID,点击“企业应用”- 创建应用” 对应范围选择自己的部门。
二.server 配置
1.微信接口文档
https://work.weixin.qq.com/api/doc/90000/90135/90664
2.微信脚本,脚本需要放到/etc/profile.d/ 路径
#!/bin/bash
#企业微信配置
CropID='wwxxxxxxxxxxxxxx'
Secret='RauJ_-t-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
APIURL=https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret
TOKEN=$(/usr/bin/curl -s -G $APIURL | awk -F\ '{print $10}')
POSTURL=https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$TOKEN
function body() {
local int AppID=1000004
local UserID=xxxxxxxxxxxuser
local PartyID=2
printf '{\n'
printf '\ttouser: '$UserID\,\n
printf '\ttoparty: '$PartyID\,\n
printf '\tmsgtype: text,\n'
printf '\tagentid: '$AppID\,\n
printf '\ttext: {\n'
printf '\t\tcontent: '$Msg\\n
printf '\t},\n'
printf '\tsafe:0\n'
printf '}\n'
}
Status=who am i | awk '{print $NF}' | sed 's/(//g' | sed 's/)//g'
if [ -n $Status ]; then
Msg=有用户上线请注意:\n主机名:hostname\n主机ip:ifconfig eht0 | grep inet | awk 'NR==1{ print $2}'\n登录用户:whoami\n地址来源:$Status
/usr/bin/curl -s --data-ascii $(body xxxxx $2) $POSTURL 2>&1 > /dev/null
fi

3.钉钉接口文档
https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq/e9d991e2
钉钉脚本,这里就不放钉钉申请机器人的步骤了
#!/bin/bash
###############################
# 2020-3-26 #
# #
# 通过钉钉接口发送用户登录信息 #
###############################
Dingding_Url=https://oapi.dingtalk.com/robot/send?access_token=
Status=who am i | awk '{print $NF}' | sed 's/(//g' | sed 's/)//g'
if [ -n $Status ]; then
Msg=有用户上线请注意:\n主机名:hostname\n主机ip:ifconfig eth0 | grep inet | awk 'NR==1{ print $2}'\n登录用户:whoami\n地址来源:$Status
curl ${Dingding_Url} -H 'Content-Type: application/json' -d
{
'msgtype': 'text',
'text': {'content': '${Msg}\n'},
'at': {'atMobiles': ['${user}' ], 'isAtAll': false}
} > /dev/null 2>&1
fi

shell脚本 用户登录服务器发送钉钉提醒的更多相关文章
- 利用shell脚本远程登录服务器并修改saltstack配置并重启服务
最近公司为了上一个活动功能,增加了40台服务器,虽然服务器可以通过saltstack 来统一管理(自动化运维工具 SaltStack 搭建),项目可以通过jenkins + saltstack统一发布 ...
- shell脚本自动登录服务器
#!/bin/sh function trapper(){ trap 'exit 1' EXIT QUIT; } serverArr=( guard-boot-001,10.1.17.12 guard ...
- 利用windows的计划任务和eKing.CmdReadFileAndSendEmailOper(控制台小程序)实现远程登录服务器的邮件告警提醒
一.场景摘要: 1.windows计划任务中,有一个用户登录时候触发的事件 2.cmd命令:netstat -ano | find "3389" 可以看到当前远程登录的IP 3 ...
- 面试笔试-脚本-1:使用shell脚本输出登录次数最多的用户
原题目: 一个文本类型的文件,里面每行存放一个登陆者的IP(某些行是反复的),写一个shell脚本输出登陆次数最多的用户. 之前刚看到这个题目时,立即没有想到一行直接解决的办法,尽管知道能够先进行排序 ...
- shell脚本自动清理服务器日志、图片等信息
在做性能测试的时候,linux服务器时常会产生大量数据,如日志信息,图片信息,文件信息等,压测一段时间后,导致服务器磁盘空间暂满而崩溃,每天手动清理比较麻烦, 利用shell脚本自动清理,脚本如下 1 ...
- 【Linux系列】-Linux中用shell脚本从SFTP服务器下载文件
银企直连的电子回单接口中,部分银行使用sftp服务作为文件服务器,通常只保留N天的文件内容,企业未在规定的时间范围下载文件之后就不能下载了,那么有一个自动下载的脚本岂不美滋滋. Linux安装SFTP ...
- 利用shell脚本将Oracle服务器中数据定时增量刷新到ftp服务器中
现有需求:将oracle数据库中的数据准实时同步至某ftp服务器中,以便前端应用能定时从ftp服务器目录中取增量数据 方法:将加工脚本写为存储过程,然后利用shell脚本执行该存储过程并将增量数据导出 ...
- silverlight开发实例(Prism+MVVM+RIA)(二)--创建shell及用户登录
在上篇基本说清了本项目的基本框架,下面开始说下项目的加载和shell.开始之前在建立EF时出现了一个问题,我在数据库中建立了视图,而在EF导入视图时出现因无法匹配主键导致无法导入视图的问题,检查发现是 ...
- Jar包一键重启的Shell脚本及新服务器部署的一些经验
原文首发于博客园,作者:后青春期的Keats:地址:https://www.cnblogs.com/keatsCoder/ 转载请注明,谢谢! 前言 最近公司为客户重新部署了一套新环境,由我来完成了基 ...
随机推荐
- php 数组(2)
数组排序算法 冒泡排序,是一种计算机科学领域的较简单的排序算法.它重复地访问要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们减缓过来.走访数列的工作室重复的进行直到没有再需要交换,也就是说该 ...
- 【linux系统】命令学习(六)awk sed grep 与管道的使用
程序运行环境输入与输出 标准输入0 read a;echo $a 标准输出1 echo cesh 错误输出 ls notr 管道重定向 管道与管道之间可以重定向 管道与文件之间可以重定向 用于写入 将 ...
- [cf1290D]Coffee Varieties
思路 统计数的种类数,也等价于统计有多少个数满足其之前没有与其相同的数 将序列以$\frac{k}{2}$为块大小分块,那么即会有$m=\frac{2n}{k}$个块 (关于$k=1$的情况,以1为块 ...
- [luogu1390]公约数的和
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define N 2000005 4 long long n,ans,f[N],vi ...
- [cf1421E]Swedish Heroes
令$p_{i}$为最终$a_{i}$之前的系数($p_{i}\in \{-1,1\}$),则有$n+\sum_{i=1}^{n}[p_{i}=-1]\equiv 1(mod\ 3)$ 证明:对于两个满 ...
- [nowcoder5668I]Sorting the Array
令$f(n,b,m)=a[1..n]$(这里下标从1开始),考虑一些性质: 性质1.对于$\forall 1\le i\le n-m+1$,若$\exists 1\le j<i,a[j]> ...
- [bzoj1105]石头花园
首先$C/2=x_{max}+y_{max}-x_{min}-y_{min}=max(x_{max},y_{max})-min(x_{min},y_{min})+min(x_{max},y_{max} ...
- react之react Hooks
函数组件,没有 class 组件中的 componentDidMount.componentDidUpdate 等生命周期方法,也没有 State,但这些可以通过 React Hook 实现. Rea ...
- GeoServer style 配置样例
<?xml version="1.0" encoding="UTF-8"?> <StyledLayerDescriptor version=& ...
- Codeforces 891D - Sloth(换根 dp)
Codeforces 题面传送门 & 洛谷题面传送门 换根 dp 好题. 为啥没人做/yiw 首先 \(n\) 为奇数时答案显然为 \(0\),证明显然.接下来我们着重探讨 \(n\) 是偶数 ...