1、报错:Could not parse response code
原因:ftp默认端口21,sftp默认端口22,未开启默认端口
2、Connnection confused
未开启21端口
2.1 解决方式
运行vsftpd服务
service vsftpd start
查看iptables设置
iptables -nL
将21端口插入到INPUT的ACCEPT中
iptables -I INPUT 1 -p tcp --dport 21 -j ACCEPT
查看插入结果
iptables -nL --line-numbers
搭建FTP服务
modprobe ip_conntrack_ftp
3、ftpClient.listFiles() 获取目录里的文件为空的解决
添加ftpClient.enterLocalPassiveMode();
4、写脚本将文件上传到指定目录
4.1 脚本内容
#!/bin/sh
PUTFILE=*.sh
ftp -v -n 192.168.*.*<<EOF
user ftpuser ftpPassword
binary
cd /home/kFtp
lcd /home/ftp
prompt
put $PUTFILE
bye
EOF
echo "commit to ftp successfully"
4.2 报错内容
/bin/sh^M: 坏的解释器: 没有那个文件或目录
4.3 原因
报错信息/bin/sh^M: 坏的解释器: 没有那个文件或目录通常是因为脚本文件在创建或编辑时使用了Windows风格的换行符(CRLF,即\r\n),而Unix或Linux系统期望的是Unix风格的换行符(LF,即\n)。这导致/bin/sh这一行被错误地解释,因为^M(\r)被视为命令的一部分,而不是换行符。
4.4 解决
使用sed命令来替换掉\r字符:
sed -i ‘s/\r$//’ your_script.sh