alissonpelizaro/ssh_powershell

Remote Powershell SSH access


Keywords
php, ssh, linux, windows, remote, Powershell
License
RPL-1.5

Documentation

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);