如何在bash脚本中将FTP文件上传到服务器?

前端之家收集整理的这篇文章主要介绍了如何在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 […snipped…] hostname [command] If command is specified,it is
executed on the remote host instead of a login shell.

所以,一个示例命令是:

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。二进制命令将其设置为二进制模式,如果您正在传输除文本文件之外的其他内容,则可以帮助您。

原文链接:https://www.f2er.com/bash/388738.html

猜你在找的Bash相关文章