我可以使用shell脚本而不是WinSCP将文件从Windows传输到Unix吗?


3

我想自动化WinSCP进程,所以我想编写一个与WinSCP相同的shell脚本。

我尝试过使用SCP命令,但它没有连接到我的本地机器。我也看过PSCP,但我无法在我的机器上安装pscp.exe。


2
WinSCP是一个复杂的程序,旨在处理一组复杂的底层协议。重新实施它将是一项非常重要的任务,而且几乎肯定不那么安全。密码学的第一条规则是“永远不要尝试自己的角色”,如果要在应用程序中实现加密过程,那么必须非常谨慎地完成这一过程。此外,WinSCP还提供了用于应用程序集成和脚本编写的库。我定期在我的.Net程序中使用WinSCP dll。
弗兰克托马斯

Windows上的Shell脚本?或者你的意思是批处理文件?无论如何,你是否认真对待在shell脚本中实现加密?或者您正在寻找一个简单的不安全的FTP?
Martin Prikryl 2016年

可以自动化Winscp。什么原因排除了使用Winscp?你需要使用什么协议?如果从Windows发送,为什么甚至提到bash。
jiggunjer 2016年

您使用的是什么版本的OS?
tjt263

Answers:


2

安装Putty,然后使用:

c:\progra~1\putty\pscp.exe c:\local_path\to\files.*  user@host:/destination/directory

您可以使用键(生成一对,并提出只有公共密钥(导出正确的格式!)到目标用户的.ssh/authorized_keys文件),使这个自动(即,而不需要您以交互方式每次输入密码)和安全。要将密钥与pscp一起使用,只需-i \path\to\PRIVATEkey在源和目标之前添加该选项即可。


是的,我也是这样做的。我创建了私钥和公钥,我能够使用密钥登录。我在这里很好 之后,我尝试使用scp命令将文件从本地系统移动到unix,但它无法正常工作。
Dee

@Dee:脚本从windows运行...如果你想从unix机器运行,那么在那里使用scp,在那里生成一个密钥,并在你的windows上有一个ssh服务器(例如:cygwin中的一个出口),和防火墙shoukd允许端口tcp22 ...
Olivier Dulac

如果从Windows运行,bat文件应该添加密钥的使用:c:\progra~1\putty\pscp.exe -i \path\to\privatekey Sourcefiles user@host:/destinationdir/
Olivier Dulac 2016年

1

我可以推荐DOS Batch FTP Scripts页面

我需要在我的工作中这样做(这是系统管理员之间的一点竞争),这对我帮助很大。您还可以将FileZilla与CommandLine或其他提供完整FTP支持的东西一起使用。


您好,我尝试过使用FTP,我在桌面上保存了一个扩展名为.bat的文件,并试图连接到我的unix服务器,它说没有连接,请你告诉我代码中有什么问题。
Dee

1
@echo off cd C:\ filestobeFTP'ed echo open unixserver.com> C:\ temp.txt echo用户名XXXXXXX >> C:\ temp.txt echo pwd >> C:\ temp.txt for / r %% i in(*)do echo put %% i >> C:\ temp.txt echo quit >> C:\ temp.txt ftp -n -s:C:\ temp.txt cd ..
Dee

1

如果您将Windows 10与Anniversary Update一起使用,则可以安装适用于Windows的Linux子系统并使用常规scp。


0

您可以使用VBScript和XMLHTTP版本。以下子下载而不是上传,但它可以为您提供一个开始:

Sub wGet(strURL, strLocalFile)
'
' Example Usage
' wGet URLtofile, LocalFileSpec
'
  Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP.3.0")
  With objXMLHTTP
    .Open "GET", strURL, False
    .Send
    If .Status = 200 Then
        Set objStream = CreateObject("ADODB.Stream")
        With objStream
          .Open
          .Type = 1
          .Write objXMLHTTP.responseBody
          .SaveToFile strLocalFile, 2
          .Close
        End With
    Else 
      varToUser = MsgBox("Web server returned an error", _
                  vbInformation, "ASU Portable Environment Setup")
      Wscript.Quit
    End If
  End With
  Set objXMLHTTP = nothing
End Sub
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.