SSH_Powershell
AplicaĆ§Ć£o em PHP pronta para realizar comandos powershell em um servidor Windows remotamente a partir de um Servidor Linux.
Requisitos
- Servidor Windows precisa ter o serviƧo SSH habilitado
- PHP >= 5.3.3
InstalaĆ§Ć£o
composer require alissonpelizaro/ssh_powershell
DependĆŖncias
- phpseclib/phpseclib >= 2.0.21
Executar em CLI
(parĆ¢metro "-d" habilita DEBUG-MODE)
php service.php -d
Executar em browser
require __DIR__.'/core.php';
$host = "host_remoto";
$user = "usuario";
$pass = "senha";
$ssh = new SSH_Conn($host, $user, $pass, $debug);
$powershell = new PowerShell($ssh);
Exemplos de comandos
//Exemplo para obter a lista de todos os usuƔrios
print_r($powershell->getUsers());
//Exemplo para procurar um usuƔrio especifico
print_r($powershell->getUser('alisson'));
//Exemplo para procurar um usuƔrio
print_r($powershell->searchUser('HomePhone', '4130305525'));
//Exemplo para resetar a senha de um usuƔrio
$powershell->resetPassword('alisson', 'novaSenha123');
//Exemplo para executar qualquer comando powershell
$powershell->exec('powershell Set-ADUser -Identity alisson -PasswordNeverExpires $true');
UtilizaĆ§Ć£o de LOG
Por permitir ser executado em CLI e em alguns casos de forma nĆ£o assistida, a melhor forma de monitoraĆ§Ć£o Ć© o LOG. A aplicaĆ§Ć£o jĆ” salva todos os comandos em LOG no arquivo ssh.log
. Para setar um log adicional basta chamar o seguinte mƩtodo estƔtico:
Log::create('DescriĆ§Ć£o do log', {true para log de erro}, {true para matar a aplicaĆ§Ć£o apĆ³s regitro});
Exemplos:
//Grava LOG como informativo
Log::create('Processo executado com sucesso');
//Grava LOG como erro
Log::create('Erro ao executar comando', true);
//Grava LOG como erro e mata a aplicaĆ§Ć£o
Log::create('Erro ao executar o comando', true, true);
//Grava LOG como informativo e mata a aplicaĆ§Ć£o
Log::create('Comando executado', false, true);
Comandos PowerShell
getUsers()
TrƔs um array com todos os usuƔrios do servidor.
$users = $powershell->getUsers();
searchUser()
Procura usuƔrios com base nos filtros passados
$users = $powershell->searchUser('HomePhone', '554130304545');
getUser()
Pega dados de um usuĆ”rio especĆfico de acordo com seu CN
$user = $powershell->getUser('alisson');
exec()
Executa qualquer comando powershell passado como parĆ¢metro
$comando = $powershell->exec('powershell Get-ADuser joao.silva -properties *');
resetPassword()
Troca a senha de acesso de um usuƔrio
$powershell->resetPassword('alisson', 'nova$enha123');
askNewPassword()
Define pedido de nova senha no prĆ³ximo logon (verdadeiro ou falso)
$powershell->askNewPassword('alisson', true);
setExpiredPass()
Seta a configuraĆ§Ć£o "Senha nunca expira" de um usuĆ”rio (verdadeiro ou falso)
$powershell->setExpiredPass('alisson', true);