手机
当前位置:查字典教程网 >脚本专栏 >perl >perl脚本实现限制ssh最大登录次数(支持白名单)
perl脚本实现限制ssh最大登录次数(支持白名单)
摘要:sshlimitperl脚本主要作用:1.限制一个ssh用户的最大登录数为n,n可自定义。2.支持白名单,如root、test登录不受限制。...

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 & (运行脚本)

【perl脚本实现限制ssh最大登录次数(支持白名单)】相关文章:

Perl读写文件简单示例

Perl脚本实现递归遍历目录下的文件

perl读写文件代码实例

用perl写的单位电脑信息采集程序

perl中尖括号运算符(<>)使用说明

perl中子程序中参数的两种引用(传递)方式介绍

使用perl实现拆分数据表(mysql)并迁移数据实例

Perl实现遍历目录例子

perl跳过首行读取文件的实现代码

perl产生随机数实现代码

精品推荐
分类导航