我有一台不经常使用的服务器,因此,cron
如果没有用户通过 SSH 和 SAMBA 共享登录,我希望每天关闭该服务器。
如何确定有多少个活动的 SSH 连接,以及有多少个活动的 SAMBA 连接?
如果这两个值都是零,则 cron 脚本将关闭服务器。
答案1
活动的 ssh 连接:
# netstat -an | grep -E "\:22[ \t]+" | grep ESTABLISHED | wc -l
1
活动的 Samba 连接:
# netstat -an | grep -E "\:445[ \t]+" | grep ESTABLISHED | wc -l
或者使用 lsof:
SSHCONNECTION=`lsof -i :22 | grep ESTABLISHED | wc -l`
SAMBACONNECTION=`lsof -i :445 | grep ESTABLISHED | wc -l`
echo "SSH connection: ${SSHCONNECTION} Samba connection ${SAMBACONNECTION}"
答案2
您可以使用以下命令检查任何服务的活动连接
netstat -an | grep ESTABLISHED | grep ":[portname] " | wc -l
通过端口名,您需要选择您正在查看的服务的端口,对于 SSH,它将是端口 22(所以应该是grep ":22 "
)(后面的空格只是为了确保它不是另一个端口。
如果你想选择多个端口(就像在 samba 中一样),请将 grep 更改为egrep ":(port|port|port) "