【发布时间】:2016-06-07 22:08:47
【问题描述】:
我有一个 perl 脚本可以远程登录到特定的 IP 和端口号。但是,如果我在建立连接后打印结果,则端口号为 23(默认)。因此,调制解调器不鼓励从脚本触发的 at 命令。
以下是我的脚本。请指教。
脚本:
#!/usr/bin/perl -w
use lib ("/u/dclement/lib/perl");
use Net::Telnet ();
$HOSTNAME = "192.168.xx.xx";
$HOSTPORT = "9998";
$conn = new Net::Telnet (Timeout => "1");
$conn->binmode(1); # don't translate CRLF
$conn->errmode("return"); # enable error trapping
$conn->telnetmode(0); # turn off telnet mode
$conn->dump_log("LOGFILE"); # output log file filehandle
$conn->output_record_separator("");
print "CONNECTING TO $HOSTNAME and $HOSTPORT\n";
# open connection to host $HOSTNAME and port $HOSTPORT
# and die if there is a problem
unless ($conn->open(Host => $HOSTNAME, Port => $HOSTPORT))
{
die "Error opening socket:: ".$conn->errmsg();
}
print "CONNECTED TO ".$conn->host().", PORT ".$conn->port()."\n";
输出
CONNECTING TO 192.168.xx.xx and 9998
CONNECTED TO 192.168.xx.xx, PORT 23
【问题讨论】:
-
你可以手动试试,还是用浏览器试试?似乎您的默认端口(23)已被删除-也许您想要的端口由于某种原因不可用?很高兴首先知道您是否可以通过任何方式到达那里。代码对我来说似乎很好。
-
我会尝试的事情:1)在构造函数中设置你可以做的一切; 2)删除您实际上不需要的任何选项; 3) 尝试删除“telnetmode”?
-
telnet 192.168.xx.xx 9998 有效。它甚至不需要密码。
-
请注意,如果 telnet 协议在该端口上不可用,
telnet命令会断开到原始连接。我猜在 9998 上运行的服务器不是 telnet 服务器,您应该使用IO::Socket::INET而不是Net::Telnet。 -
我很确定该端口支持 telnet。 Telnet IP PortNo 有效,我可以手动输入 AT 命令。