Como capturar “Acesso negado” usando plink do script powershell

0

Eu tenho um script powershell que chama o seguinte comando:

plink -batch -ssh $defUser@$srv -pw $defPassword -m $executeCommandFile

O problema que $ defPassword não é sempre o mesmo / correto. Como posso pegar o erro Access denied do plink?

Algo parecido com isto:

if (plink -batch -ssh $defUser@$srv -pw $defPassword -ne "Access denied") 
    \execute -m $executeCommandFile
else
    \use different $defPassword(for example $defPassword2) and then execute

Pense que é como try \ catch mas com a senha usada no plink

    
por igor 29.10.2017 / 15:23

1 resposta

0

A mensagem

"Access is denied" aparece no fluxo de erros. Você pode usar os operadores de redirecionamento do Windows PowerShell , por exemplo, da seguinte maneira:

$aux = . plink -batch -ssh $defUser@$srv -pw $defPassword -m $executeCommandFile *>&1
if ( $aux -match '^Access.*denied' ) {
    ### the specified string found: use different $defPassword
} else {
    ### success
    $aux              ### show plink results
}

Observe que 2>&1 poderia ser suficiente:

  • *>&1 sends all output types (*) to the success output stream;
  • 2>&1 sends errors (2) and success output (1) to the success output stream.
    
por 29.10.2017 / 20:54