主页 > 知识库 > perl脚本实现限制ssh最大登录次数(支持白名单)

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

热门标签:邯郸外呼调研线路 真人语音电销机器人系统 买了外呼系统不想用了怎么办 乐昌电话机器人 北京语音电销机器人价格 开封百应电销机器人联系方式 武汉呼叫中心外呼系统线路商 电话机器人电话卡封号怎么办 浦东上海400开头的电话申请

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限制用户登录
  • zf框架的session会话周期及次数限制使用示例
  • ORACLE 10G修改字符编码没有超字符集的限制
  • javascript Deferred和递归次数限制实例
  • Java用Cookie限制点赞次数(简版)
  • java发送短信系列之限制日发送次数
  • C# winform实现登陆次数限制
  • Oracle用户连续登录失败次数限制如何取消
 

标签:松原 石嘴山 鄂州 宜春 六安 河北 自贡 淄博

巨人网络通讯声明:本文标题《perl脚本实现限制ssh最大登录次数(支持白名单)》,本文关键词  perl,脚本,实现,限制,ssh,最大,登录,次数,支持,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《perl脚本实现限制ssh最大登录次数(支持白名单)》相关的同类信息!
  • 本页收集关于perl脚本实现限制ssh最大登录次数(支持白名单)的相关信息资讯供网民参考!
  • 推荐文章