modifiche aggiunta create user

This commit is contained in:
2017-09-18 22:22:06 +02:00
parent c0adcc5248
commit 6b216bcea0

View File

@@ -3,7 +3,12 @@ use warnings;
use strict; use strict;
use DBI; use DBI;
use Getopt::Long; use Getopt::Long;
use Passwd::Unix; use Passwd::Unix qw(check_sanity reset encpass passwd_file shadow_file
group_file backup warnings del del_user uid gid gecos
home shell passwd rename maxgid maxuid exists_user
exists_group user users users_from_shadow del_group
group groups groups_from_gshadow);
use File::Path qw( make_path );
use Data::Dumper qw(Dumper); use Data::Dumper qw(Dumper);
my $db_adm = 'ase_lar'; my $db_adm = 'ase_lar';
@@ -14,6 +19,8 @@ my $db_adm_srv = 'www.aseltd.eu';
my ( $company, $company_id, $company_name ); my ( $company, $company_id, $company_name );
my ( $company_db_name, $company_db_user, $company_db_pwd ); my ( $company_db_name, $company_db_user, $company_db_pwd );
my ( $company_os_user, $company_os_pwd );
my $company_os_grp = '1005'; #group aseuser
sub getTimeStamp sub getTimeStamp
{ # parm [ts] => timestamp for filename; [log] => timestamp for log; [db_ts] => timestamp for db; { # parm [ts] => timestamp for filename; [log] => timestamp for log; [db_ts] => timestamp for db;
@@ -48,7 +55,8 @@ sub checkCompanyDBSet {
. " - pid $$ >> Could not connect to admin database: $DBI::errstr"; . " - pid $$ >> Could not connect to admin database: $DBI::errstr";
my $sth = my $sth =
$dbh->prepare( "select id, name, db_user, db_pwd, db_name from " $dbh->prepare(
"select id, name, db_user, db_pwd, db_name, os_user, os_pwd from "
. "ase_lar.companies where name_short like '" . "ase_lar.companies where name_short like '"
. $company . $company
. "%';" ) . "%';" )
@@ -68,6 +76,8 @@ sub checkCompanyDBSet {
$company_db_name = $results->{'db_name'}; $company_db_name = $results->{'db_name'};
$company_db_user = $results->{'db_user'}; $company_db_user = $results->{'db_user'};
$company_db_pwd = $results->{'db_pwd'}; $company_db_pwd = $results->{'db_pwd'};
$company_os_user = $results->{'os_user'};
$company_os_pwd = $results->{'os_pwd'};
print getTimeStamp("log") print getTimeStamp("log")
. " - pid $$ >> Selected company: " . " - pid $$ >> Selected company: "
. $company_name . ".\n"; . $company_name . ".\n";
@@ -88,6 +98,7 @@ sub setCompanyDBSet {
$company_db_user = sprintf "dbu%08s", $company_id; $company_db_user = sprintf "dbu%08s", $company_id;
$company_db_name = sprintf "dbn%08s", $company_id; $company_db_name = sprintf "dbn%08s", $company_id;
$company_db_pwd = generateRandomPassword(16); $company_db_pwd = generateRandomPassword(16);
my $sth = my $sth =
$dbh->prepare( "update ase_lar.companies set db_user = '" $dbh->prepare( "update ase_lar.companies set db_user = '"
. $company_db_user . $company_db_user
@@ -190,6 +201,46 @@ sub checkCompanyDBTables() {
$sth_db->finish; $sth_db->finish;
} }
sub setCompanyOSSet {
my $dbh = DBI->connect( "DBI:mysql:$db_adm;host=$db_adm_srv",
$db_adm_usr, $db_adm_pwd )
or die getTimeStamp("log")
. " - pid $$ >> Could not connect to admin database: $DBI::errstr";
$company_os_user = sprintf "aseu%08s", $company_id;
$company_os_pwd = generateRandomPassword(16);
my $sth =
$dbh->prepare( "update ase_lar.companies set os_user = '"
. $company_os_user
. "', os_pwd = '"
. $company_os_pwd
. "' where id = "
. $company_id
. ";" )
or die getTimeStamp("log") . " - pid $$ >> $DBI::errstr";
$sth->execute() or die getTimeStamp("log") . " - pid $$ >> $DBI::errstr";
$sth->finish;
user(
$company_os_user, encpass($company_os_pwd),
maxuid() + 1, $company_os_grp,
$company_name . " user", "/home/" . $company_os_user,
"/bin/bash"
) or die getTimeStamp("log") . " - pid $$ >> " . error() . ". \n";
if ( !-d "/home/" . $company_os_user ) {
make_path "/home/" . $company_os_user,
{ mode => 0755, owner => $company_os_user, group => $company_os_grp }
or warn getTimeStamp("log")
. " >> Failed to create path: /home/"
. $company_os_user . "\n";
}
return 1;
}
print getTimeStamp("log") . " - pid $$ >> Execution started.\n"; print getTimeStamp("log") . " - pid $$ >> Execution started.\n";
GetOptions( "company=s" => \$company ) GetOptions( "company=s" => \$company )
@@ -207,5 +258,10 @@ if ( !checkCompanyDBGrant() ) {
setCompanyDBTables(); setCompanyDBTables();
} }
print getTimeStamp("log") . " - pid $$ >> Execution ended.\n"; if ( !defined $company_os_user or !exists_user($company_os_user) ) {
print getTimeStamp("log") . " - pid $$ >> Create os user.\n";
setCompanyOSSet();
}
print getTimeStamp("log") . " - pid $$ >> Execution ended . \n ";
exit; exit;