Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use warnings;
- use strict;
- package Module1;
- my @user;
- my $count = 0;
- my @test;
- my @last =qx(last);
- my @logins;
- my %logins_by_user;
- my @UserDiskUsage;
- #my $pass =qx(sudo passwd -S @user);
- #Opens the file /etc/passwd and puts the users with an uid over 1000 but less that 65000 into an array.
- sub userloggins {
- open( my $passwd, "<", "/etc/passwd") or die "/etc/passwd failed to open.n";
- while (my $lines = <$passwd>) {
- my @splitarray = split(/:/, $lines );
- if( $splitarray[2] >= 1000 && $splitarray[2] < 65000) {
- $user[$count] =$splitarray[0];
- #print "$user[$count]n";
- $count++;
- }
- }
- close $passwd;
- #Counts how many times each user has logged in and stores them in a hash, then sorts them
- for my $user (@user) {
- $logins_by_user{$user} = grep /^Q$userE /, `last '$user'`;
- }
- for my $user (
- sort { $logins_by_user{$b} <=> $logins_by_user{$a} || $a cmp $b } @user
- ) {
- print("$user: $logins_by_user{$user}n");
- }
- }
- userloggins();
- #del 2, monitor user password age
- print "-------------------------------------------------------n";
- PasswordAge();
- sub PasswordAge {
- my $days = 10;
- my $currentdate = (qx(date +%s)) / 86400;
- for my $i (0...$#user) {
- my @shadowDays = qx(sudo grep $user[$i] /etc/shadow | cut -d: -f3);
- if ($shadowDays[0] < ($currentdate - $days)){
- print ("User $user[$i] has not changed their password in $days days.n");
- }
- #print "$currentdaten";
- #print "$user Has not changed their password since $splitpassn";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement