【问题标题】:Cadaver bash script upload尸体 bash 脚本上传
【发布时间】:2016-02-21 00:53:43
【问题描述】:

请注意:由于 StackOverflow 的限制,我需要在 URL 中插入一些空格。

我有一个 FreeBSD 服务器。我需要在 WebDav 云存储上备份我以前的 tar.gz 数据库,如 Yandex Disk 或 Box.com 或 4Shared。

Putty 一切正常,命令行接一个命令行。我可以在 Yandex Disk 上上传我的文件:

%cadaver  
dav:!> open https://webdav.yandex.com  
Authentication required for Yandex.Disk on server `webdav.yandex.com':
Username: MyUserName
Password:
dav:/> put MyFile.tar.gz
Uploading MyFile.tar.gz to `/MyFile.tar.gz':  
Progress: [=============================>] 100.0% of 1229518 bytes succeeded.
dav:/> exit  
Connection to ` webdav . yandex . com' closed.  
%

但是,我的 bash 脚本无法上传我的文件。

这是我的 bash 脚本“criptdav.sh”:

#!/bin/sh

/usr/local/bin/cadaver < datadav

这是我的“datadav”文件:

open https:// webdav . yandex . com  
MyUserName  
MyPassword  
put MyFile.tar.gz  
exit

这是我的 bash 脚本的 Putty 屏幕截图:

%sh scriptdav.sh  
dav:!> open https://webdav.yandex.com  
Authentication required for Yandex.Disk on server `webdav.yandex.com': 
Username: MyUserName
dav:/> 
Connection to `webdav.yandex.com' closed.  
%

Nota Bene:

我尝试使用 Yandex、Box、4Shared。结果相同。脚本无法上传我的文件。

问题:

我的 bash 脚本有什么问题?

【问题讨论】:

  • 感谢 S K 编辑了我的消息,但是我的“Putty 截图”现在已经坏了,所以现在没人能看懂。
  • 一个挑剔:以#!/bin/sh 开头的脚本,或者打算以sh yourscript 而不是bash yourscript 运行的脚本不是bash 脚本,而是POSIX sh 脚本。它们是两种不同的语言。
  • 无论如何 -- 没有专门研究过尸体,但一般来说,编写良好的软件(从安全最佳实践的角度来看)不会接受来自标准输入的密码,而是从 TTY 读取密码.
  • ...如果您想要一个 WebDAV 客户端在编写脚本时表现良好,我会考虑curl(是的,它可以用于此目的)或lftp(是的,尽管名称中有“FTP”,但它支持WebDAV)。

标签: bash shell webdav cadaver


【解决方案1】:

cadaver 将从-r 标志指定的文件中获取命令,并将从您的主目录中名为.netrc 的文件中提取凭据

在你的家中创建一个 .netrc 文件,其中包含此文件

machine webdav.yandex.com
login MyUserName
password MyPassword

然后用这个调用尸体:

cadaver -r datadav https://webdav.yandex.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    相关资源
    最近更新 更多