我正在尝试获取我们在服务器上的所有文件的列表(特别是我们在那里的每个pdf文件)。我尝试使用总指挥官并搜索文件。它在某种程度上起作用,因为我得到了我们在那里的每个pdf的列表,但是无法导出结果(我们有100.000+个文件)
我已经尝试使用bash脚本来获取信息,但我对linux不是很有经验,而且我真的不知道我在做什么。
我的脚本看起来像这样:
#!/bin/bash
hostname="<host>"
ftp -i -nv $hostname << EOF
user <username> <password>
ls -R
EOF
运行上面的脚本我得到
?Invalid command
501 Illegal PORT command
ftp: bind: Address already in use
221 Goodbye
任何帮助或指向我搜索什么将不胜感激。
尝试配置ftp
以使用PASV(被动)模式进行数据传输。这是用-p
开关完成的。
我不确定你是否能用这个ftp-client做一个递归文件列表。在我的情况下,ls -R
只提供了当前工作目录中的文件和目录列表。也许Recursive FTP directory listing in shell/bash with a single session (using cURL or ftp)会帮助你。
有了卷曲,这很方便
curl ftp://yourftpserver/dir/ --user username:password
ncftpls ftp://yourftpserver/dir/*.pdf
请注意,上述命令中的*.pdf
等模式可以按预期工作。
对于递归,请使用-R
。有关更多选项,请参阅man ncftpls
。
ncftpls
由ncftp
包提供。对于RHEL,此软件包可在epel
repo中找到。
curl ftp://user:password@<ip>/path/
如果它是一个目录,最后一个/
是必须的。这适用于curl版本7.29.0
正如我在其中一条评论中所提到的那样,请不要在命令中使用user:password作为纯文本,否则您将面临被劫持历史的风险!而是至少使用带有用户名+密码的受保护/受限文件,并将其替换为您的命令,例如:
ftp://yourftpserver/dir/ --user "$(cat .userpw)"
而.userpw是受保护/受限制的文件,其示例内容为:myusername:mypassword