1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
| #!/usr/bin/perl
use strict;
use warnings;
#
# Loading modules
#
use File::Basename;
use Getopt::Long;
use Term::ReadPassword::Win32;
use Net::Telnet ();
#
# Global variable
#
my $root_password = "";
my $account_password = "";
#
###### Start Of Script #####
#
GetOptions("server:s" => \my $server, "login:s" => \my $login, "account:s" => \my $account, "uid:s" => \my $uid);
$server = FindServer($server);
$login = FindLogin($server);
my $password = FindPassword($login);
$account = FindAccount($server);
$uid = FindUid($account);
#
# Command
#
my $add_user = "/usr/sbin/useradd -u $uid -g 20 -d /u/$account -s /usr/bin/ksh -m $account";
my $add_password = "/usr/sam/lbin/usermod.sam -p $account_password $account";
#
# connection sever
#
print "[+] Connect to server $server with the login $login..\n";
# DEBUG
my $connexion = new Net::Telnet (Timeout => 10, Prompt => "/[>] $/", Dump_Log => 'telnet.txt', Errmode=>'return', Input_log => 'input.log', Output_log => 'output.log') or die "Can't connect:$!";
#~ my $connexion = new Net::Telnet (Timeout => 10, Prompt => "/[>] $/", Errmode=>'return',) or die "Can't connect:$!";
$connexion->open($server);
$connexion->login($login, $password);
$connexion->waitfor("/[>] $/");
#
# Check if the user exists before creating
#
print "[+] Search if the account $account exists..\n";
my @results = $connexion->cmd("more /etc/passwd | grep $account\n");
if ($results[0] =~ /$account/)
{
print "[+] The account $account already exists on the machine $server !\n";
}
else
{
print "[+] ..\n";
$connexion->cmd("su\n");
$connexion->waitfor('/password: ?$/i') or die "no old password prompt: ", $connexion->lastline;
$connexion->print("$root_password\n");
print "[+] executing the first command..\n";
$connexion->cmd("touch toto\n");
#~ $connexion->cmd("$add_user\n");
#~ print "[+] Executing the second command..\n";
#~ $connexion->cmd("$add_password\n");
}
print "[+] Disconnecting from server $server..\n";
$connexion->close;
#
# Functions
#
sub FindServer
{
if (defined($server))
{
return $server;
}
else
{
print "On what server to connect ?\n";
$server = <STDIN>;
chomp($server);
return $server;
}
}
sub FindLogin
{
my $server = shift;
if (defined($login))
{
return $login;
}
else
{
print "With what you want to login to connect to server $server ?\n";
$login = <STDIN>;
chomp($login);
return $login;
}
}
sub FindPassword
{
my $login = shift;
$password = read_password("Quel password souhaitez vous utiliser avec le compte $login ?\n");
#~ print "What password you want to use with the account $login ?\n";
#~ my $password = <STDIN>;
chomp($password);
return $password;
}
sub FindAccount
{
my $server = shift;
if (defined($account))
{
return $account;
}
else
{
print "What you want to create account on the server $server ?\n";
$account = <STDIN>;
chomp($account);
return $account;
}
}
sub FindUid
{
my $account = shift;
if (defined($uid))
{
return $uid;
}
else
{
print "IUD ?\n";
$uid = <STDIN>;
chomp($uid);
return $uid;
}
}
#
###### End Of Script #####
# |
Partager