我正在尝试编写一个BASH脚本来testing我拥有的FTP站点是否正在运行。 因此,我想让bash脚本连接到FTP站点,用一个虚拟帐户login并将输出redirect到一个文件,然后我可以grep来确认login成功。
(我知道把用户/传入一个文件不build议,但这个虚拟帐户被chrooted到一个空目录,不能逃到shell,在任何情况下,我是唯一的用户可以login到shell提示。)
我在Ubuntu上使用BASH shell。
我创build了一个名为“ftp-dummy”的文件,看起来像这样
username password
然后我从提示符中做了这个:
adam$ ftp my.ftpsite.com < ftp-dummy
这不起作用 – 我没有看到正常的欢迎消息,输出是:
Password:Name (my.ftpsite.com:adam) :
我试图删除<和文件名之间的空间 – 相同的结果。
如果我将输出redirect到一个testing文件,testing文件显示:
Name (my.ftpsite.com:adam): ?Invalid command
我仍然在STDOUT上得到密码提示
我也尝试使用回声,并得到相同的结果:
echo -e "username \npassword \n" | ftp my.ftpsite.com
我不明白为什么我没有看到正常的欢迎消息或为什么input不被从文件中读取。 任何帮助将非常感激。
谢谢,
亚当
使用脚本的ftp客户端,如lftp。
你这样使用它:
lftp -u login,pass host.com -e "get file.txt;exit "
甚至更简单 – 使用wget:
wget -O file ftp://login:[email protected]/file.txt
我遇到过使用UNIX ftp客户端redirectSTDIN的问题。 虽然我会经常尝试通过它们,但我发现在许多情况下都会更好地适应。
你也可以看看nagios-plugins check_ftp ,因为你可能会把它拉出来用于你的目的。 通常,几乎没有必要重新发明轮子。
要具体回答你的问题,FTP的netrc文件将代表你提供validation细节。
在ftp上有一个标志,可以用来在发送用户命令时停止自动密码请求。
男子ftp
ftp -n
然后,您可以将您的命令(包括用户和通行证)传送给ftp。