我下面有以下程序,该程序可将telnet连接到另一台设备并打印序列号和Mac地址。

我的问题是由于某种原因,如果我发送命令一次跳过了第一个命令,然后发送了第二个命令,但是如果我复制同一命令两次,它将发送该命令。

连续发送多个命令的正确方法是什么?

发送每个命令后是否应该刷新缓冲区?

我的环境

Eclipse Ide
Ubuntu 12.10
perl 5, version 14, subversion 2 (v5.14.2)

我的代码段:

$telnet = Net::Telnet->new($remoteSystem);
$| = 1;
$telnet->buffer_empty();
$telnet->buffer_empty(); 
$result = $telnet->input_log($errorlog);
#$_ = "@lines";
@TSN =$telnet->cmd('export | grep -e SerialNumber..[A-Z] | cut -d"\"" -f2');
@TSN =$telnet->cmd('export | grep -e SerialNumber..[A-Z] | cut -d"\"" -f2');

@mac = $telnet->cmd('ifconfig  | grep eth0 | cut -d" "  -f 11');

print "@TSN AND @TSN @mac";

print FH "$remoteSystem\n";

print "Telnetting into $remoteSystem .\n";    # Prints names of the tcd

close(telnet);
}

foreach (@host) {
    checkStatus($_);
}

OUTPUT跳过第一个命令:

bash-2.02  AND bash-2.02  ifconfig  | grep eth0 | cut -d" "  -f 11
00:11:D9:3C:6E:02
bash-2.02 # 
bash-2.02 Telnetting into debug79-109 .

输出可以,但是我必须发送两次相同的命令:

export | grep -e SerialNumber..[A-Z] | cut -d"\"" -f2
AE20001901E2FD1
bash-2.02 # 
bash-2.02  AND export | grep -e SerialNumber..[A-Z] | cut -d"\"" -f2
AE20001901E2FD1
bash-2.02 # 
bash-2.02  ifconfig  | grep eth0 | cut -d" "  -f 11
00:11:D9:3C:6E:02
bash-2.02 # 
bash-2.02 Telnetting into debug79-109 

===============>>#1 票数:0 已采纳

在对cmd()的调用中指定命令提示符,例如@TSN =$telnet->cmd('export | grep -e SerialNumber..[AZ] | cut -d"\\"" -f2', Prompt => 'bash-2.02 #');

===============>>#2 票数:0

为模块telnet创建对象后尝试打开连接

$telnet->open($host);

之后执行waitFor方法:(等待直到模式bash-2.02#出现)

$telnet->waitFor(/^(bash-\d+.\d+ #)$/);

然后执行命令,它将为您提供适当的输出。

  ask by user2287381 translate from so

未解决问题?本站智能推荐:

3回复

如何在perl脚本中的telnet命令提示符上运行命令

我正在perl脚本中执行telnet命令,如下所示。 但运行$ telnetOutput = `telnet localhost 4505 4505`; 命令,我们知道它将打开telnet命令提示符,但所有其他命令仍然在相同的旧命令prmopt中执行,因此它说clients或1或pol
1回复

Perl Net :: Telnet在大命令输出时超时

我正在编写一个使用Net::Telnet的程序,但是当我尝试在第41行使用$tel->cmd时,会发生错误。 命令在CoyoteBridge4000.pl第41行超时 命令是有效的,但输出很大,这就是我认为超时发生的原因。 我能做些什么来解决这个问题? 因为我试图改变
1回复

Perl如果我有内存位置,是否可以重新创建Net :: Telnet连接?

如果我有其存储位置,是否可以重新创建Net :: Telnet连接? 如何将Net :: Telnet = GLOB(0x1b50ff0)字符串再次转换为Net :: Telnet对象? 谢谢。
1回复

在python中发送telnet命令

我正在尝试在tetnet中发送命令,但是它不起作用。 我试过在这个论坛中找到不同的代码,但没人能用。 用于重启设备。 我正在使用python 3.6。
1回复

Telnet发送命令,然后读取响应

这应该没有那么复杂,但是Ruby和Python Telnet库似乎都具有笨拙的API。 谁能告诉我如何向Telnet主机写入命令,然后将响应读入字符串以进行某些处理? 在我的情况下,带有换行符的“ SEND”会检索设备上的一些温度数据。 使用Python我尝试过: 它什么也
2回复

如何使用python在telnet会话中发出命令

我正在编写python脚本以在模拟器中自动执行某些任务...连接到模拟器命令是telnet localhost <port> 。 这个命令我通过os.system(telnet localhost <port>) 。 这是工作。 并且模拟器正在运行:
1回复

Telnetlib无需telnet命令即可读取服务器响应

我正在使用telnetlib连接到远程telnet服务器并解析其响应,但是,所有read_*的read_*方法都返回其原始响应-包括原始telnet命令字节(以0xFF开头)-这对我而言是不希望的。 例如,当调用read_all : 所需的输出b'Hello' b'\\xff\\x
1回复

在Python中通过Telnet发送字节

在Python脚本中,我需要通过Telnet发送单个字节,例如,值为0x06。 然而,从写功能telnetlib ( Telnet.write(buffer) )只需要字符串作为参数。 使用str(0x06)的转换不起作用,因为其输出将数字转换为chars数组,而我想要的是一个char,
1回复

如何在Python中使用telnet命令检查远程服务器上的缺勤数据流

我有一个带有IP地址和端口的远程服务器。 我可以使用标准命令窗口成功连接到它。 使用命令窗口时,我可以看到通过窗口的数据流,但是如果数据流停止,我就无法收到通知。 我想使用Python来完成相同的任务,增加的功能是在数据流停止时提醒我。 我附上了以下我一直在使用的代码,是否有人能够帮助我
1回复

使用telnetlib读取每个命令的输出

我正在使用Python的telnetlib到telnet到网络路由器,并执行一些命令,我​​想获取这些命令的输出。 我只想要显示版本的输出,但只显示所有输出,有没有办法只获取执行的最后一条命令的输出?