perl脚本实现限制ssh最大登录次数(支持白名单)

2023-12-05 0 684

ssh limit perl脚本主要作用:
1.限制一个ssh用户的最大登录数为n,n可自定义。
2.支持白名单,如root、test登录不受限制。

如果一个ssh用户的最大登录数超过指定数字,则后登录的会把先前登录的踢掉,以此达到控制登录数的目的。

该脚本需要主机支持perl,如果没有,可yum安装。

脚本源码:

#!/usr/bin/perl -w
use strict;
#white list
my @ALLOW_USERS = qw{
test
root
lulu1
};
#the maximum number of ssh login
my $LOGIN_TIMES = 1;
sub main
{
my @lines = `ps -eo user,pid,etime,cmd | grep sshd`;
my $users;
for my $line (@lines) {
if(my ($user, $pid, $etime, $cmd) = $line =~ /^([^\\s]+)\\s+(\\d+)\\s+([^\\s]+)\\s+(sshd:.+)$/) {
next if grep {$user eq $_} @ALLOW_USERS;
my $proc = {\’pid\’, $pid, \’etime\’, $etime, \’cmd\’, $cmd};
push @{$users->{$user}}, $proc;
}
}
for my $key(keys(%$users)) {
my @sshs = sort {
my ($lb, $la) = (length($b->{\’etime\’}), length($a->{\’etime\’}));
if($lb == $la) {
$b->{\’etime\’} cmp $a->{\’etime\’};
} else {
$lb <=> $la;
}
} @{$users->{$key}};
$LOGIN_TIMES = 1 if $LOGIN_TIMES < 1;
for (1 .. $LOGIN_TIMES) { pop @sshs; };
for my $ssh (@sshs) {
kill 9, $ssh->{\’pid\’};
}
}
}
while(1) {
main;
sleep 3;
}

【使用方法】

另存脚本存到root目录,命名为limit.pl,然后执行:

echo \”/root/limit.pl &\” >> /etc/rc.d/rc.local (加入开机启动)
/root/limit.pl & (运行脚本)

您可能感兴趣的文章:

  • Oracle 添加用户并赋权,修改密码,解锁,删除用户的方法
  • Oracle新建用户、角色,授权,建表空间的sql语句
  • [Oracle] 如何使用触发器实现IP限制用户登录
  • ZendFramework框架的session会话周期及次数限制使用示例
  • ORACLE 10G修改字符编码没有超字符集的限制
  • javascript Deferred和递归次数限制实例
  • Java用Cookie限制点赞次数(简版)
  • java发送短信系列之限制日发送次数
  • C# winform实现登陆次数限制
  • Oracle用户连续登录失败次数限制如何取消

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Perl perl脚本实现限制ssh最大登录次数(支持白名单) https://www.u-9.cn/jiaoben/perl/99759.html

perl脚本实现限制ssh最大登录次数(支持白名单)
上一篇:

已经没有上一篇了!

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务