我正在尝试编写一个 BASH 脚本来测试我拥有的 FTP 站点是否正在运行。因此,我希望 bash 脚本连接到 FTP 站点,使用虚拟帐户登录并将输出重定向到一个文件,然后我可以使用 grep 来确认登录是否成功。
(我知道不建议将用户/密码放在文件中,但是这个虚拟帐户被 chrooted 到一个空目录并且无法逃逸到 shell,而且无论如何我是唯一可以登录到 shell 提示符的用户。)
我在 Ubuntu 上使用 BASH shell。
我创建了一个名为“ftp-dummy”的文件,如下所示
username
password
然后我根据提示做了以下操作:
adam$ ftp my.ftpsite.com < ftp-dummy
这不起作用 - 我没有看到正常的欢迎消息并且输出是:
Password:Name (my.ftpsite.com:adam) :
我尝试删除 < 和文件名之间的空格 - 结果相同。
如果我将输出重定向到测试文件,则测试文件显示:
Name (my.ftpsite.com:adam): ?Invalid command
我仍然在 STDOUT 上收到密码提示
我也尝试使用 echo 并得到相同的结果:
echo -e "username \npassword \n" | ftp my.ftpsite.com
我不明白为什么我没有看到正常的欢迎消息,或者为什么没有从文件中读取输入。任何帮助都将不胜感激。
谢谢,
亚当
答案1
使用可编写脚本的 ftp 客户端,如 lftp。
你可以这样使用它:
lftp -u login,pass host.com -e "get file.txt;exit "
或者更简单——使用 wget:
wget -O file ftp://login:[email protected]/file.txt