有没有办法编写一个脚本来进行 ftp 登录,这样我就不必一遍又一遍地输入内容?

有没有办法编写一个脚本来进行 ftp 登录,这样我就不必一遍又一遍地输入内容?

我最近通过 ftp 连接与远程系统进行广泛的工作,因为会话时间很短,当我在本地计算机上完成工作时,我必须经常重新登录,所以我需要一种方法来创建自定义命令/ shell脚本只需要一个词就可以登录ftp服务器,但问题是如何做到这一点。

例如

~$ ftp domainname.com
 ...
 Name (domainname.com): MyName
 ...
 Password: xxxx
 ...
 ftp>

答案1

通常,ftp命令行客户端支持配置文件~/.netrc,您可以在其中配置远程系统的凭据,例如:

machine legacy.system.example.org
login juser
password keins

这样您ftp legacy.system.example.org就不必再重新输入此信息了。

如果您需要进行更多自动化,您可以ftp通过管道命令编写脚本,例如:

$ cat pushit.sh
# complex logic to set
# EXAMPLE_FILE=
ftp <<EOF
prompt
mput $EXAMPLE_FILE
quit
EOF

当然,如果系统不支持ssh,它可能也不支持 ftps - 但你可以尝试一下(例如通过FTP-SSL)如果您需要保护您的连接。

远程FTP

普通命令之一的替代方法ftp是使用lftp,因为它提供了自动登录和命令执行的多种功能。

例子:

$ lftp -e 'source ~/login.lftp'
$ cat login.lftp
open sftp://juser:[email protected]
cd /path/to/favorite/dir

请注意,此示例显示了对SFTP标准不支持的服务器OpenSSH sftp 客户端

该选项-e指示lftp 在启动时执行命令并保持交互。

这样的lftp脚本也可能会获取其他脚本,自动断开与服务器的连接等。

相反,with-c-flftp 在执行指定为参数的命令或从指定文件读取后直接退出。

答案2

如果你想编写整个事情的脚本:

#!/bin/sh
HOST='ftp.example.com'
USER='yourid'
PASSWD='yourpw'
FILE='file.txt'

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put $FILE
quit
END_SCRIPT
exit 0

也可以看看这个网页

答案3

如果你想自动登录,可以使用文件.netrc。我不推荐这样做,因为您必须以不安全的纯文本形式存储您的用户名和密码。如果您可以使用 ssh,那么我建议您使用 ssh 和身份验证密钥来自动登录。

如果您无法使用带密钥的 ssh 等安全方法,您可以通过以下方式配置您的 ftp 信息本指南

相关内容