我一直试图将这个问题分为两部分,以便实现自动化:
在这个部分(1)中,我创建了以下代码:
# Load WinSCP .NET assembly
Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"
# Set up session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = "peanut-edgenode1.dundlermufflin.com"
UserName = "JoeStreet"
Password = "dundlermufflin123"
SshHostKeyFingerprint = "ssh-ed28549 255 HJGF564hjfq8if1Y8KYALtf6zEv+z3o="
}
$sessionOptions.AddRawSettings("Cipher", "aes,chacha20,3des,WARN,des,blowfish,arcfour")
$sessionOptions.AddRawSettings("ProxyHost", "web.isa.la.proxy.dundlermufflin.com")
$sessionOptions.AddRawSettings("ProxyPort", "4200")
$sessionOptions.AddRawSettings("ProxyUsername", "na%5CJoeStreet")
$sessionOptions.AddRawSettings("ProxyPassword", "dundlermufflin123")
$session = New-Object WinSCP.Session
try
{
# Connect
$session.Open($sessionOptions)
# Your code
$session.PutFiles("C:\Users\JoeStreet\Documents\report-2021-02-02_no_locations.xlsx", "/efs/home/JoeStreet/report-2021-02-02_no_locations.xlsx").Check()
}
finally
{
$session.Dispose()
}But...if I希望从EFS (WinSCP)转移到Cloudera WebHDFS,通过PuTTY登录到peanut-edgenode1.dundlermufflin.com并执行以下操作:上面的部分(2)
hdfs dfs -put -f /efs/home/JoeStreet/report-2021-02-02_no_locations.xlsx /prd/product/ssa_stg/JoeStreet/一切都很好。
但是如何在PowerShell中插入该命令呢?
我试着用不同的方式加入$session.PutFiles(origin, destiny).Check(),但没有成功.
发布于 2021-02-24 07:17:56
如果EFS有一个类似Linux的shell,则可以使用Session.ExecuteCommand。
$session.ExecuteCommand("hdfs dfs -put -f /efs/home/JoeStreet/report-2021-02-02_no_locations.xlsx /prd/product/ssa_stg/JoeStreet/")如果服务器有更不标准的地方,您可能需要使用适当的SSH (而不是SFTP)库,比如SSH.NET或Posh。
https://stackoverflow.com/questions/66158999
复制相似问题