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