Active IQ Unified Manager Discussions

WFA Command - Distribute configuration files with pscp

rtoubali

Hi there,

I am struggling to write a command which should basically distribute a list of configuration-files from WFA-Host to a specfic Linux-Host.

Basically I am trying to utilize putty "pscp" within a WFA-Command and concatenate the list of files as an array. I am able to run a pscp command on the powershell-cli. But in WFA I do get errors while trying to save the command.

Here is my code snippet. Are there any other solutions out there

++++

param (

  [parameter(Mandatory=$false, HelpMessage="Hostname or IP address")]

  [string]$SourceHostName,

 

[parameter(Mandatory=$false, HelpMessage="Hostname or IP address")]

  [string]$TargetHostName,

[parameter(Mandatory=$false, HelpMessage="UserName")]

  [string]$UserName,

 

[parameter(Mandatory=$false, HelpMessage="PrivateKeyFile in openSSH Format")]

  [string]$PrivateKeyFile="D:\Downloads\opensshkey",

 

[parameter(Mandatory=$false, HelpMessage="PrivateKeyFile in openSSH Format")]

  [string]$PathToPSCPEXE="D:\temp\pscp.exe",

 

  [parameter(Mandatory=$false, HelpMessage="PrivateKeyFile in openSSH Format")]

  [string]$UploadPath="/tmp/wfa_plugin/",

 

  [parameter(Mandatory=$false, HelpMessage="")]

  [string]$FileCloneXML="D:\NetApp\wfa_plugins\build1\clone_S96.xml",

[parameter(Mandatory=$false, HelpMessage="")]

  [string]$FileDBCloneMountDB="D:\NetApp\wfa_plugins\build1\db_clone_mount_db.sh",

  [parameter(Mandatory=$false, HelpMessage="")]

  [string]$FileDBClonePurgeFS="D:\NetApp\wfa_plugins\build1\db_clone_purge_fs.sh",

 

  [parameter(Mandatory=$false, HelpMessage="")]

  [string]$FileDBCloneStartDB="D:\NetApp\wfa_plugins\build1\db_clone_start_database.sh",

  [parameter(Mandatory=$false, HelpMessage="")]

  [string]$FileDBCloneStopDB="D:\NetApp\wfa_plugins\build1\db_clone_stop_database.sh",

  [parameter(Mandatory=$false, HelpMessage="")]

  [string]$FileDBCloneUmount="D:\NetApp\wfa_plugins\build1\db_clone_umount.sh"

)

try

{

     $PathToUploadFile = $FileCloneXML, $FileDBCloneMountDB, $FileDBCloneUmount, $FileDBClonePurgeFS, $FileDBCloneStartDB, $FileDBCloneStopDB

     if ($TargetHostname)

        {

            $Arguments = "-i", $PrivateKeyFile, $PathToUploadFile,($UserName,"@",$TargetHostName,":",$UploadPath,$PathToUploadFile.Split("\")[-1] -join "")

            & $PathToPSCPEXE $Arguments

        }

catch

{

      Get-WFALogger -Warn -message ("Failed")

}

3 REPLIES 3

abhit

I am not an expert in powershell script. However i modified the script a little and I am able to save.

Let us know if you need any more help.

------------------------------

param (

  [parameter(Mandatory=$false, HelpMessage="Hostname or IP address")]

  [string]$SourceHostName,

 

[parameter(Mandatory=$false, HelpMessage="Hostname or IP address")]

  [string]$TargetHostName,

[parameter(Mandatory=$false, HelpMessage="UserName")]

  [string]$UserName,

 

[parameter(Mandatory=$false, HelpMessage="PrivateKeyFile in openSSH Format")]

  [string]$PrivateKeyFile="D:\Downloads\opensshkey",

 

[parameter(Mandatory=$false, HelpMessage="PrivateKeyFile in openSSH Format")]

  [string]$PathToPSCPEXE="D:\temp\pscp.exe",

 

  [parameter(Mandatory=$false, HelpMessage="PrivateKeyFile in openSSH Format")]

  [string]$UploadPath="/tmp/wfa_plugin/",

 

  [parameter(Mandatory=$false, HelpMessage=" ")]

  [string]$FileCloneXML="D:\NetApp\wfa_plugins\build1\clone_S96.xml",

[parameter(Mandatory=$false, HelpMessage=" ")]

  [string]$FileDBCloneMountDB="D:\NetApp\wfa_plugins\build1\db_clone_mount_db.sh",

  [parameter(Mandatory=$false, HelpMessage=" ")]

  [string]$FileDBClonePurgeFS="D:\NetApp\wfa_plugins\build1\db_clone_purge_fs.sh",

 

  [parameter(Mandatory=$false, HelpMessage=" ")]

  [string]$FileDBCloneStartDB="D:\NetApp\wfa_plugins\build1\db_clone_start_database.sh",

  [parameter(Mandatory=$false, HelpMessage=" ")]

  [string]$FileDBCloneStopDB="D:\NetApp\wfa_plugins\build1\db_clone_stop_database.sh",

  [parameter(Mandatory=$false, HelpMessage=" ")]

  [string]$FileDBCloneUmount="D:\NetApp\wfa_plugins\build1\db_clone_umount.sh"

)

try

{

     $PathToUploadFile = $FileCloneXML, $FileDBCloneMountDB, $FileDBCloneUmount, $FileDBClonePurgeFS, $FileDBCloneStartDB, $FileDBCloneStopDB

     if ($TargetHostname)

        {

            $Arguments = "-i", $PrivateKeyFile, $PathToUploadFile,($UserName,"@",$TargetHostName,":",$UploadPath,$PathToUploadFile.Split("\")[-1] -join "")

            & $PathToPSCPEXE $Arguments

        }

}

catch

{

      Get-WFALogger -Warn -message ("Failed")

}

------------------------------

-Abhi

rtoubali

Abhi, many thanks for your quick response. I was able to save the cmdlet within WFA. Right now I am testing the file copies with pscp. Once successful I`m going to post here the final implementation.

bdave

Hi rtoubali,

Without having to install pscp and jump through hoops, you can use the built-in PowerShell Toolkit cmdlets "Read-NaFile" and "Write-NaFile".  If it's for clustered ONTAP, there are similar cmdlets, "Read-NcFile", and "Write-NcFile".

I posted an example workflow/command here: https://communities.netapp.com/docs/DOC-23962#comment-16913

There's also a thread talking about issues with blank lines and workarounds here:

https://communities.netapp.com/message/104746#104746

Hope this helps.

Cheers,

Dave

Announcements
NetApp on Discord Image

We're on Discord, are you?

Live Chat, Watch Parties, and More!

Explore Banner

Meet Explore, NetApp’s digital sales platform

Engage digitally throughout the sales process, from product discovery to configuration, and handle all your post-purchase needs.

NetApp Insights to Action
I2A Banner
Public