我正在尝试通过FTP在我的VB 6.0应用程序中连接到远程服务器。
我尝试使用Inet连接到远程服务器,但它给出了状态未知错误(代码:120089)。所以我试图通过批处理文件来做到这一点。我创建了一个批处理文件,如下所示: -
open 192.168.1.3 22
root
!@#%RedHat%)(*
cd "/opt/test"
put "C:\envars.exe" "envars.exe"
bye
(用户名为'root'&
密码是!@#%RedHat%)(*
)
我尝试从命令提示符运行批处理文件,如下所示: - C:> ftp -s:F:\ testScript.txt
现在我收到以下错误: - “ftp:connect:unknown error number”
以前我收到消息, “连接的” 其次是, “连接由远程主机关闭。”
但是,我可以使用Filezilla连接到此服务器。
如果您能够找出问题所在,请告诉我。
提前致谢
Sujit
答案 0 :(得分:1)
您确定是否要连接到端口22? 21是通常的FTP端口。
此外,您应该尝试手动执行该脚本(运行ftp
并自行输入)以查看错误发生的位置。可能是您的防火墙阻止了活动模式下的返回流量(请参阅Filezilla是否以被动模式运行)。
根据您的评论,您肯定会连接到安全的FTP服务器。 Windows附带的ftp.exe
程序仅执行标准FTP。
"ftps client for windows"
的快速Google提供了许多可能性,其中一种是Putty中的安全FTP客户端,这是我们在工作中使用(强烈推荐)的工具。另一个是CygWin附带的sftp
。
我不相信其中任何一个都允许您以交互方式指定密码。他们正确地假设您出于安全目的使用它们,并且在脚本中使用明文密码会使安全性无法实现。
您最好的选择是按照SSH要求的方式设置共享密钥。这是最安全的方式。
但是,如果您对安装的简易性而不是安全性更感兴趣,则可以使用expect
等待密码提示,然后将密码提供给SFTP程序。 CygWin也附带expect
(Putty没有)所以我建议使用它。
答案 1 :(得分:0)
您应该在端口21上连接。端口22用于SSH连接,这解释了为什么Filezilla可以连接,因为它支持FTPS(FTP over SSH)。
答案 2 :(得分:0)
如果不评论密码的适当性(或其他方式),您使用的几个字符可能会被批处理文件解释为特殊字符。检查(可能通过ECHO语句)并确保按原样传递该特定字符串。