服务器有时不知道谁登录了系统,出现了问题也无法找到责任人。谁动了服务器而无从可知。不如在服务器安装个监控,监视下每天登录服务器的用户。
Linux 系统
注册钉钉机器人,获取机器人的 webhook 地址
登录服务器编写以下代码
#!/bin/bash
#获取登录者的用户名
user=$USER
#获取登录者的IP地址
ip=${SSH_CLIENT%% *}
#获取登录的时间
time=$(date +%F%t%k:%M)
#服务器的IP地址
server='xxxxxxx.xxxxx.xxxxx.xxxx'
function SendMessageToDingding(){
#你钉钉机器人的地址。
local url="https://oapi.dingtalk.com/robot/send?access_token=你钉钉机器人的token"
local UA="Mozilla/5.0(WindowsNT6.2;WOW64)AppleWebKit/535.24(KHTML,likeGecko)Chrome/19.0.1055.1Safari/535.24"
local res=`curl -XPOST -s -L -H"Content-Type:application/json" -H"charset:utf-8" $url -d"{\"msgtype\":\"text\",\"text\":{\"content\":\"$1\n$2\"}}"`
}
SendMessageToDingding "服务器登录告警" "时间 $time,用户 $user,用户地址 $ip,服务器地址 $server"
写入文件 /etc/ssh/sshrc
即可。
之后就可以放心了,有任何登录,都会收到消息。再也不用提心吊胆了。
Windows 系统
获取机器人链接步骤与以上相同
windows 下编写 bat 脚本
首先创建脚本文件.bat 执行推送钉钉功能 登录推送文件 in.bat 退出登录 out.bat
简单推送代码参考如下:
curl "https://oapi.dingtalk.com/robot/send?access_token=你钉钉机器人的token" -H "Content-Type: application/json" -d "{\"msgtype\": \"text\",\"text\": {\"content\":\"login IN %date:~0,10% %time:~0,5%\"}}" -X POST
curl "https://oapi.dingtalk.com/robot/send?access_token=你钉钉机器人的token" -H "Content-Type: application/json" -d "{\"msgtype\": \"text\",\"text\": {\"content\":\"login OUT %date:~0,10% %time:~0,5%\"}}" -X POST
由于 windows 系统不自带 curl 功能无法直接访问接口推送消息 需要下载一个 curl 工具 curl.zip
下载后解压,并配置解压后的目录到系统 PATH,之后 CMD 中输入 curl --help 测试是否成功
现在设置监控就可以实现推送,但是.bat 文件执行时会出现一个黑框,让人很是害怕,所以经过查询找到了一种方法
编写 vbs 文件里边执行.bat 文件,就不会出现黑框,创建.vbs 文件 in.vbs out.vbs 代码如下:
createobject("wscript.shell").run "这里填对应 bat 存放的位置",0
createobject("wscript.shell").run "C:\IN.bat",0
createobject("wscript.shell").run "C:\OUT.bat",0
设置登录断开监控
1.登录 windows 服务器 打开控制面板中的管理工具
2.打开任务计划程序
3.点击创建任务 名称自定义 in
4.点击触发器,点击新建 开始任务下拉框选择“当连接到用户会话时”下方出现对应设置选“远程计算机连接”确定
5.点击操作,点击新建 操作下拉框选择“启动程序”下方程序或脚本选择自己创建的那个 in.vbs 文件 注:vbs 文件与 bat 文件最好不要存放在有空格的文件夹下
6.相同操作创建 out 任务 触发器选择“当从用户会话断开连接时”脚本选择自己创建的那个 out.vbs 文件
这样就实现了简单监控登录退出功能
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于