我最近通过 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
或-f
lftp 在执行指定为参数的命令或从指定文件读取后直接退出。
答案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 信息本指南。