2016-02-17 1 views
1

Так вот модуль я создал:Я создал модуль в Perl, но я не понимаю, как использовать его

#!/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$user\E /, `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 "$currentdate\n"; 



    #print "$user Has not changed their password since $splitpass\n"; 
} 
} 

Подпрограмма я хочу, чтобы отправить данные, называется PasswordAge. Переменная, которую я хочу отправить данные через пользовательский ввод, из другого сценария, называется $ days. Как я могу это сделать ? Я пробовал искать онлайн-поиск ответов, но я не совсем понимаю, как это сделать в моем случае. Надеюсь ты понимаешь.

+1

Возможно, вы захотите ознакомиться с модулями Perl и посмотреть на некоторые примеры. Начните с создания файла 'MyModule.pm', сохраните там свой' passwordAge', затем создайте файл 'script.pl' в той же папке и« используйте MyModule »и протестируйте свою функцию с помощью MyModule :: passwordAge ($ days) '. Но есть много учебников, которые могут объяснить это лучше. Начните с малого и постройте функциональность по частям. – kba

ответ

3

Ответ на ваш вопрос, как задать:

  • Сохранить модуль как 'Module1.pm'.
  • use Module1;
  • В вашем скрипте: Module1::PasswordAge();

Однако при Рискуя немного покровительственно - это, вероятно, стоит прочитать на, например, perlmod как процесс создания модулей, а не массово сложно, несколько необычно делать, прежде чем понимать, как импортировать и загружать модуль.