我开发了一个包含FTP
调用的bash脚本。
因为我所做的操作是基于一个例程,所以我在macro
中添加了一个.netrc
。
我的主目录中的文件。
这是我的宏的一个小例子
macdef getFile
lcd ../../test/
get test1.txt
quit
在这个宏中,我正在更改本地目录并放置我想要的文件。
我想参数化的是文件名,因为我总是做相同的操作,但是文件名不同。
当在ftp连接内部调用宏时,是否有可能将参数传递给宏?
像这样的?
ftp>$ getFile anotherTestFile.txt
提前谢谢你
最佳答案
我只是做了同样的事。通常我会安装ncftp或其他更有用的东西,但我不能,所以我必须做的是制作一个shell脚本来完成它:
1)正确地设置.netrc以处理登录、目录更改等。不要退出宏或类似的操作,只要让它到达您希望文件到达的位置,然后宏停止。就像你所做的,但我只是不“退出”行。
2)使用以下命令生成shell脚本:
#!/bin/bash
if [[ -n "$1" ]]; then
echo "put $1" > ftpCmdTemp
ftp your.hostname.here < ftpCmdTemp
rm ftpCmdTemp
else
echo "need a filename"
fi
3)将此保存到路径中的某个位置,并使其可执行。我称之为“pushlog”,所以在我的例子中是“chmod+x pushlog”
4)现在我可以跑了
pushLog someLogFile.txt
它将转移我给它的任何东西(确保
pushLog
在你的路径上以及所有这些)。