Question [Fonction]Fonction Requête SSH

Plus d'informations
il y a 14 ans 6 mois #5247 par Alan Pinard
Bonjour à tous,

Cette fonction vous permet, à l'aide de plink.exe, d'envoyer des requête ssh et de récupérer le résultat s'il y a lieu.

Avant d'utiliser cette fonction il vous faudra télécharger plink.exe du project PuTTy.

[code:1]
Function VA-PlinkSSHCmd {

PARAM(
$Server,
$Username,
$Password,
$CmdFile,
$PlinkPath,
$PlinkCmd,
$pgpfp,
$Verbose,
$Session,
$Protocol,
$Port,
$Interactive,
$ForwardLocalPort,
$ForwardRemotePort,
$X,
$A,
$T,
$ProtocolVersion,
$Compression,
$KeyFile,
$Pageant,
$Tunnel
)

BEGIN{
If ($Server -eq $Null){Throw \"Veillez indiquer un adresse de serveur enutilisant l'option -Server <IP>\"}
ElseIf ($Username -eq $Null){Throw \"Aucun nom d'usager n'a été indiqué, utiliser l'option -Username <Nom_D'usager>\"}
ElseIf ($Password -eq $Null){Throw \"Aucun mot de passe n'a été indiqué, utiliser l'option -Password <MotDePasse>\"}
ElseIf ($PLinkPath -eq $Null){Throw \"Plink.exe est introuvable, utiliser l'option -PlinkPath <Drive:\Folder\plink.exe>\"}
ElseIf (($PlinkCmd -eq $Null) -and ($CmdFile -eq $Null)){Throw \"Aucune command ne sera envoyé à Plink.exe, utiliser l'option -PlinkCmd <ls /tmp> ou l'option -CmdFile <Drive:\Folder\CmdFile.txt>\"}
}

PROCESS {
$PlinkSShOptions = \"\"
$Password = $Password.Insert(0,\"-pw \"«»)

If($Verbose -ne $Null){
If($Verbose -eq \"Disable\"«») {
$Verbose = \"\"
}
ElseIf ($Verbose -eq \"Enable\"«») {
$Verbose = \"-v \"
$PlinkSShCmd.Length
$PlinkSShOptions.Insert(($PlinkSShOptions.Length), $Verbose)
}

Else {
Throw \"L'option -Verbose peut être [Enable | Disable]. Ex: -Verbose Disable\"
}
}
If($X -ne $Null){
If($X -eq \"Disable\"«») {
$X = \"-x \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $X)
}
ElseIf ($X -eq \"Enable\"«») {
$X = \"-X \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShCmd.Length, $X)
}

Else {Throw \"L'option -X peut être [Enable | Disable]. Ex: -X Disable\"}
}
If($A -ne $Null){
If($A -eq \"Disable\"«») {
$A = \"-a \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $A)
}
ElseIf ($A -eq \"Enable\"«») {
$A = \"-A \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $A)
}
Else {Throw \"L'option -A peut être [Enable | Disable]. Ex: -A Disable\"}
}
If($T -ne $Null){
If($T -eq \"Disable\"«») {
$T = \"-t \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $T)
}
ElseIf ($T -eq \"Enable\"«») {
$T = \"-T \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $T)
}
Else {Throw \"L'option -T peut être [Enable | Disable]. Ex: -T Disable\"}
}
If($ProtocolVersion -ne $Null){
If($ProtocolVersion -eq \"2\"«») {
$ProtocolVersion = \"-2 \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $ProtocolVersion)
}
ElseIf ($ProtocolVersion -eq \"1\"«») {
$ProtocolVersion = \"-1 \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $ProtocolVersion)
}
Else {Throw \"L'option -ProtocolVersion peut être [1 | 2]. Ex: -ProtocolVersion 2\"}
}
If($Compression -ne $Null){
If($Compression -eq \"Disable\"«») {
$Compression = $Null
}
ElseIf ($Compression -eq \"Enable\"«») {
$Compression = \"-C \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $Compression)
}
Else {Throw \"L'option -Compression peut être [Enable | Disable]. Ex: -Compression Disable\"}
}
If($Pageant -ne $Null){
If($Pageant -eq \"Disable\"«») {
$Pageant = \"-noagent \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $Pageant)
}
ElseIf ($Pageant -eq \"Enable\"«») {
$Pageant = \"-agent \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $Pageant)
}
Else {Throw \"L'option -Pageant peut être [Enable | Disable]. Ex: -Pageant Disable\"}
}
If($Interactive -ne $Null){
If($Interactive -eq \"Disable\"«») {
$Interactive = $Null
}
ElseIF ($Interactive -eq \"Enable\"«») {
$Interactive = \"-batch \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $Interactive)
}
Else {Throw \"L'option -Interactive peut être [Enable | Disable]. Ex: -Interactive Disable\"}
}
If($Port -ne $Null){
If($Port -eq \"22\"«»){$Port = $Null
}
Else {
$Port = \"-P $Port \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $Port)
Write-Host -ForegroundColor Yellow \"Port :\"$PlinkSShOptions
}
}

If($Protocol -ne $Null){
If($Protocol -eq \"ssh\"«»){
$Protocol = \"-ssh \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $Protocol)
}
ElseIf($Protocol -eq \"telnet\"«»){
$Protocol = \"-telnet \"
}
ElseIf($Protocol -eq \"rlogin\"«»){
$Protocol = \"-rlogon \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $Protocol)
}
ElseIf($Protocol -eq \"raw\"«»){
$Protocol = \"-raw \"
$PlinkSShOptions = $PlinkSShOptions.Insert($PlinkSShOptions.Length, $Protocol)
}
Else {
$Protocol = $Null
}
}
Write-Host $PlinkSShOptions
$PlinkSShCmd = $PlinkPath + \" \" + $PlinkSShOptions + \" \" + $Password + \" \" + $Username + \"@\" + $Server + \" \" + $PlinkCmd

Write-Host -ForegroundColor Cyan \"Commande envoyé par PLink.exe ->\"$PlinkSShCmd

$ConMsgCmd_PlinkSShCmd = Invoke-Expression -Command $PlinkSShCmd
}

END {
Return $ConMsgCmd_PlinkSShCmd
}

}

#VA-PlinkSSHCmd -PLinkPath \"Plink.exe\" -Interactive \"Enable\" -ProtocolVersion \"2\" -Username \"root\" -Password \"toor\" -Server \"server1.domain.com\" - \"md5sum /data/fichier.csv\" -Compression \"Enable\"
[/code:1]

La pièce jointe VA_PlinkSSHCmd.ps1 est absente ou indisponible



Alan Pinard
Version A

Message édité par: Versiona, à: 3/09/09 00:39<br><br>Message édité par: Versiona, à: 3/09/09 05:01

Alan Pinard
Version A
Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 6 mois #5314 par Robin Lemesle
Whoua, pas mal. je t'avoue que je n'ai pas testé. Peux-tu nous donner un exemple d'utilisation ?

Robin

Robin MVP PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 7 mois #10131 par Alan Pinard
Bonjour Robin,

L'exemple est a la fin du script:

[code:1]
#VA-PlinkSSHCmd -PLinkPath \&quot;Plink.exe\&quot; -Interactive \&quot;Enable\&quot; -ProtocolVersion \&quot;2\&quot; -Username \&quot;root\&quot; -
Password \&quot;toor\&quot; -Server \&quot;server1.domain.com\&quot; - \&quot;md5sum /data/fichier.csv\&quot; -Compression \&quot;Enable\&quot;
[/code:1]

Alan Pinard
Version A

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.085 secondes
Propulsé par Kunena