ssh limit perl腳本主要作用:
1.限制一個(gè)ssh用戶的最大登錄數(shù)為n,n可自定義。
2.支持白名單,如root、test登錄不受限制。
如果一個(gè)ssh用戶的最大登錄數(shù)超過指定數(shù)字,則后登錄的會(huì)把先前登錄的踢掉,以此達(dá)到控制登錄數(shù)的目的。
該腳本需要主機(jī)支持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,然后執(zhí)行:
echo "/root/limit.pl " >> /etc/rc.d/rc.local (加入開機(jī)啟動(dòng)) /root/limit.pl (運(yùn)行腳本)
標(biāo)簽:松原 石嘴山 鄂州 宜春 六安 河北 自貢 淄博
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《perl腳本實(shí)現(xiàn)限制ssh最大登錄次數(shù)(支持白名單)》,本文關(guān)鍵詞 perl,腳本,實(shí)現(xiàn),限制,ssh,最大,登錄,次數(shù),支持,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。