modifiche aggiunta create user
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user