ssh 登录服务器触发钉钉机器人

今天帮一个网友修改一个脚本,顺便抄了作业

人狠话不多,直接上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash
#获取相关登陆信息
name=`hostname`
ip=$(ip addr | grep inet | grep -v inet6 | sed -n 2p | awk '{print $2}' |awk -F "/" '{print $1}')
user=$USER
_ip=${SSH_CLIENT%% *}
_time=`date '+%Y-%m-%d-%H:%M:%S'`
# #查询登陆地址并返回相应信息
ipaddress=`curl -q -s https://www.36ip.cn/?ip=$_ip`

addr=`echo $ipaddress | sed '/ \+/s//|/g'`
echo $ip $user $name $addr
#自定义接入钉钉函数
function SendMessageToDingding(){
#钉钉机器人接口地址
url="https://oapi.dingtalk.com/robot/send?access_token=xxxx"
#推送到钉钉
res=`curl -X POST -s -L -H "Content-Type:application/json" -H "charset:utf-8" $url -d "
{
\"msgtype\": \"text\",
\"text\": {
\"content\": \" $1\n 主机名称:$2\n 主机 IP:$3\n 登录用户:$4\n 登录 IP:$5\n IP 归属地:$6\n 登录时间:$7 \"
}
}"`
#显示推送结果
# echo $res
}
body="服务器 SSH 登录提示"
#SendMessageToDingding $subject $body
#调用函数
SendMessageToDingding $body $name $ip $user $_ip $addr $_time

这个其实在很多公司里面还是很常见的需求,当服务器被登录的时候,给运维人员或者管理人员发消息,当然,不止于钉钉,也可以是邮箱,或者一些自己公司内部的接口,通信软件等等。

弄这个的时候发现一个 zshrc 的小问题

当我把脚本放在~/.zshrc里面执行的时候会报一个no matches found:的错误,解决办法是

在执行脚本之前添加setopt no_nomatch


ssh 登录服务器触发钉钉机器人
https://bubao.github.io/posts/ca75751e.html
作者
一念
发布于
2021年3月11日
许可协议