我正在尝试在工作场所实施R,并从我们所做的所有数据中节省一些时间。
我们收到的很多文件都是通过SFTP发送给我们的,因为它们包含敏感信息。
我看了看StackOverflow&谷歌,但似乎没有什么对我有用。我尝试使用我在网上找到的示例中的RCurl库,但它不允许我将端口(22)包含在登录详细信息中。
library(RCurl)
protocol <- "sftp"
server <- "hostname"
userpwd <- "user:password"
tsfrFilename <- "Reports/Excelfile.xlsx"
ouptFilename <- "~/Test.xlsx"
url <- paste0(protocol, "://", server, tsfrFilename)
data <- getURL(url = url, userpwd=userpwd)
我最终收到错误代码
Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) :
embedded nul in string:
任何帮助都将非常感激,因为这将节省我们的时间!
谢谢,
单
答案 0 :(得分:1)
在这里看起来类似的情况:Using R to download SAS file from ftp-server
我在r中没有专家,但在给出的示例中看起来像getBinaryUrl()而不是getURL()。
希望有所帮助 中号
答案 1 :(得分:1)
使用getURI()
和getURL()
函数时,在指定端口选项时也遇到问题。
要指定端口,只需将端口添加为port = ####
而不是port(####)
。例如:
data <- getURI(url = url,
userpwd = userpwd,
port = 22)
现在,就像@MarkThomas指出的那样,每当遇到加密错误时,请尝试使用getBinaryURL()
而不是getURI()
。在大多数情况下,这将允许您下载SAS
或.csv
格式的UTF-8
文件以及LATIN1
文件!
答案 2 :(得分:0)
请注意,有两个包RCurl
和rcurl
。对于RCurl
,我使用成功的密钥文件通过sftp连接:
opts <- list(
ssh.public.keyfile = pubkey, # file name
ssh.private.keyfile = privatekey, # filename
keypasswd <- keypasswd # optional password
)
RCurl::getURL(url=uri, .opts = opts, curl = RCurl::getCurlHandle())
为此,您需要创建两个密钥文件,例如:通过腻子或类似的。