如何在bash脚本中将FTP文件上传到服务器?
我正在尝试写一个将文件上传到服务器的bash脚本。我该如何实现呢?一个bash脚本是正确的用法吗?
你真的应该使用SSH / SCP / SFTP而不是FTP。 SSH / SCP具有更安全的功能,使用公钥/私钥可以在没有用户名或密码的情况下运行。
您可以发送单个文件: scp <file to upload> <username>@<hostname>:<destination path> 或整个目录: scp -r <directory to upload> <username>@<hostname>:<destination path> 有关使用RSYNC设置键和将文件移动到服务器的更多详细信息,如果您有大量文件要移动,或者有时在一组随机文件中只得到一个新文件,那么请看: http://troy.jdmz.net/rsync/index.html 您还可以在服务器中执行单个命令: 从人ssh
所以,一个示例命令是: ssh username@hostname.example bunzip file_just_sent.bz2 如果您可以使用带有密钥的SFTP来获得安全连接的好处,那么我用来执行命令有两个技巧。 首先,您可以使用echo和pipe传递命令 echo "put files*.xml" | sftp -p -i ~/.ssh/key_name username@hostname.example 您也可以使用-b参数的批处理文件: sftp -b batchfile.txt ~/.ssh/key_name username@hostname.example 如果你明白FTP是不安全和更有限的,你真的想要脚本吗? http://www.stratigery.com/scripting.ftp.html有一篇伟大的文章 #!/bin/sh HOST='ftp.example.com' USER='yourid' PASSWD='yourpw' FILE='file.txt' ftp -n $HOST <<END_SCRIPT quote USER $USER quote PASS $PASSWD binary put $FILE quit END_SCRIPT exit 0 “-n”to ftp确保命令不会尝试从当前终端获取密码。另一个花哨的部分是使用heredoc:<< END_SCRIPT启动heredoc,然后在该行开头的完全相同的END_SCRIPT本身结束heredoc。二进制命令将其设置为二进制模式,如果您正在传输除文本文件之外的其他内容,则可以帮助您。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |