检查ocserv的连接

  部署了Cisco AnyConnect的服务,分享给朋友,想知道有没有人用,可以使用netstat命令。netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态等。netstat的具体详细用法可以参考文一文二

1
netstat -ant #显示所有TCP连接

而我设置的ocserv是在9000端口,就可以只看这个端口

1
netstat -ant #显示9000端口

从中就可以看出有没有人连接了。我们也可以做一个脚本,

1
2
3
cd /root
mkdir port-monitor
vi port-monitor/port9000-ipmonitor.sh

放入以下内容

1
2
3
4
5
6
7
8
#!/bin/bash
# File: port-ip-monitor.sh
# Created: Wednesday, August 27 2014 by Hua Liang[Stupid ET] <et@everet.org>
# Adapted: Friday, MArch 6 2015 by Gang <exodus.bo@gmail.com>
filename="port9000-ip-monitor.log"
regex="9000" # 9000
date +"[%Y-%m-%d %H:%M:%S]" >> $filename
netstat -anp | egrep $regex | grep -E "tcp.*ESTABLISHED" | awk '{print $4, $5}' | cut -d: -f2 | sort -u >> $filename

现在可以试着运行这个脚本,

1
/root/port-monitor/port9000-ip-monitor.sh

有时候因为Linux和Win格式不合的原因,会看到这样的错误信息,

1
bash: /root/port-monitor/port9000-ip-monitor.sh, /bin/sh^M: bad interpreter: No such file or directory

可以用vi去修改格式,也可以运行这个命令自己修改,

1
sed -i -e 's/\r$//' /root/port-monitor/port9000-ip-monitor.sh

运行之后,就可以在/root下面看到log文件了。在Centos crontab里面加入下面一行,可以让脚本每分钟自动运行

1
* * * * * /root/port-monitor/port9000-ip-monitor.sh

如果担心每分钟运行产生log太多,可以改为每5分钟运行一次

1
*/5 * * * * /root/port-monitor/port9000-ip-monitor.sh

看到连上的IP之后,我们可以用下面的命令来查看这个IP地址来自何方,

1
curl ipinfo.io/116.211.6.248

本文作为新手学习笔记,参考了博文1博文2博文3等文章,一并感谢!

也可以写一个脚本来查看IP的地理位置,

赋予执行权限,就可以执行了。

1
2
3
4
5
6
7
8
9
10
11
chmod +x curli.sh
./curli.sh 114.114.114.114
{
"ip": "114.114.114.114",
"hostname": "public1.114dns.com",
"city": "Nanjing",
"region": "Jiangsu",
"country": "CN",
"loc": "32.0617,118.7778",
"org": "AS6461 Abovenet Communications, Inc"
}

评论