问题现象:
在Linux登录root用户后执行“wget --ftp-user=name--ftp-password=pwd#* ftp://192.168.1.2:21/app.bin ”指令,能够正常下载文件。但是, Linux自启动脚本中运行这条指令时,就会报错误代码如下。
wget: unrecognized option '--ftp-user=name'
BusyBox v1.23.1 (2018-08-24 15:25:04 CST) multi-call binary.
Usage: wget [-c|--continue] [-s|--spider] [-q|--quiet] [-O|--output-document FILE]
[--header 'header: value'] [-Y|--proxy on/off] [-P DIR]
[-U|--user-agent AGENT] [-T SEC] URL...Retrieve files via HTTP or FTP
-s Spider mode - only check file existence
-c Continue retrieval of aborted transfer
-q Quiet
-P DIR Save to DIR (default .)
-T SEC Network read timeout is SEC seconds
-O FILE Save to FILE ('-' for stdout)
-U STR Use STR for User-Agent header
-Y Use proxy ('on' or 'off')
规避方式:
使用指令“wget ftp://name:pwd%23*@192.168.1.2:21/app.bin -P/usrdata“可以实现FTP下载,但是密码部分含有‘#’就需要转译成‘%23’即十六进制码。其他特殊符号转译方式参考文档: https://blog.youkuaiyun.com/u013412790/article/details/51433790
解决方式:
root登录前运行的是系统用户,其中的wget是/bin/wget。启动起来的代码也是属于系统用户的。
root登录后运行的是root用户,其中的wget是/usr/bin/wget。
前者wget是简易版的,只能支持以上列举的几个参数。后者完整,故在执行时,指定路径到/usr/bin/wget就可以了。
如: /usr/bin/wget --ftp-user=name --ftp-password=pwd#* ftp://192.168.1.2:21/app.bin -P/usrdata
或:/usr/bin/wget ftp://name:pwd%23*@192.168.1.2:21/app.bin -P/usrdata
引申:
busybox的功能介绍与应用;wget使用方式参考如下两文档。
https://blog.youkuaiyun.com/binchel/article/details/20209809
https://blog.youkuaiyun.com/gangyanliang/article/details/8226637