未处理与Node.js套接字代码一起提交的FTP命令
我使用telnet进行了以下FTP会话:未处理与Node.js套接字代码一起提交的FTP命令,node.js,sockets,events,ftp,Node.js,Sockets,Events,Ftp,我使用telnet进行了以下FTP会话: $telnet ftp.fsn.hu 21 正在尝试195.228.252.133。。。 已连接到ftp.fsn.hu。 转义字符为“^]”。 220 ftp.fsn.hu ftp服务器(版本6.00LS)已就绪。 匿名用户 331客户登录确定,将您的电子邮件地址作为密码发送。 通过joe@example.com 230来宾登录正常,访问限制适用。 我尝试将其自动化: var net = require('net'); var sock = net.
$telnet ftp.fsn.hu 21
正在尝试195.228.252.133。。。
已连接到ftp.fsn.hu。
转义字符为“^]”。
220 ftp.fsn.hu ftp服务器(版本6.00LS)已就绪。
匿名用户
331客户登录确定,将您的电子邮件地址作为密码发送。
通过joe@example.com
230来宾登录正常,访问限制适用。
我尝试将其自动化:
var net = require('net');
var sock = net.Socket();
var regex220 = /^220/;
var regex331 = /^331/;
var regex230 = /^230/;
sock.on('data', function (buffer)
{ console.log('data received:\n' + buffer);
if (buffer.toString().match(regex220) !== null)
{
sock.write('USER anonymous');
console.log("sent: 'USER anonymous'");
} else if (buffer.toString().match(regex331) !== null)
{
sock.write('PASS joe@example.com');
console.log("sent: 'PASS joe@example.com'");
} else if (buffer.toString().match(regex230) !== null)
{
console.log('LOGGED IN');
}
});
sock.connect(21, 'ftp.fsn.hu');
在Fedora 32和Node.js 12.16.1上运行此命令
$node fsn.js
收到的数据:
220 ftp.fsn.hu ftp服务器(版本6.00LS)已就绪。
已发送:“用户匿名”
它就挂在那里
为什么该程序没有通过第二轮和第三轮?您必须使用CRLF终止(提交)命令:
sock.write('USER anonymous\r\n');
哦,你说得对。