Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl:Net::Appliance::Session ssh连接在输出上提供奇怪的字符_Perl_Ssh - Fatal编程技术网

Perl:Net::Appliance::Session ssh连接在输出上提供奇怪的字符

Perl:Net::Appliance::Session ssh连接在输出上提供奇怪的字符,perl,ssh,Perl,Ssh,我将Perl5.8.8与Net::Appliance::Session 1.36一起使用,并将vim作为编辑器。 在dev环境中,当我连接到基于linux的网络盒并发送带有捕获输出的命令时,我会在这里和那里看到奇怪的字符,还有双重提示: Cisco Mobility Service Engine root@xxx.xxx.xxx.xxx's password: Last login: Thu May 17 14:19:01 from xxx.xxx.xxx.xxx^M ^[]0;root@HO

我将Perl5.8.8与Net::Appliance::Session 1.36一起使用,并将vim作为编辑器。 在dev环境中,当我连接到基于linux的网络盒并发送带有捕获输出的命令时,我会在这里和那里看到奇怪的字符,还有双重提示:

Cisco Mobility Service Engine

root@xxx.xxx.xxx.xxx's password:
Last login: Thu May 17 14:19:01 from xxx.xxx.xxx.xxx^M
^[]0;root@HOSTNAME:~^G^[[?1034h[root@HOSTNAME ~]# #no-paging-command^M
^[]0;root@HOSTNAME:~^G[root@HOSTNAME ~]#  $TIMESTAMP$=1526592421 ^Gecho no-paging-command^M
no-paging-command^M
^[]0;root@HOSTNAME:~^G[root@HOSTNAME ~]# ^G^M
^[]0;root@HOSTNAME:~^G[root@HOSTNAME ~]#  $TIMESTAMP$=1526592421 ^Ggetserverinfo^M
我写的奇怪的人物是:

^[]0;
此问题在测试和生产环境中看起来更好:

Cisco Mobility Service Engine

root@xxx.xxx.xxx.xxx's password:
Last login: Tue May 15 10:59:10 from xxx.xxx.xxx.xxx^M
[root@HOSTNAME ~]# #no-paging-command^M
[root@HOSTNAME ~]#  $TIMESTAMP$=1526517216 ^Gecho no-paging-command^M
no-paging-command^M
[root@HOSTNAME ~]# ^G^M
[root@HOSTNAME ~]#  $TIMESTAMP$=1526517216 ^Ggetserverinfo^M
在这种情况下,不同输出的根本原因是什么


谢谢你的建议

关于这些奇怪的字符,您是对的,这些字符是ASCI字符,它们设置了额外的终端特性,这对于perl脚本解析来说非常烦人。
我去掉它们的方法是用同样的方法在生产过程中使用CRUTAB。

你没有指定你认为奇怪的字符。如果是像
^[[?1034h
这样的位,则这些是ANSI转义序列,用于更改文本颜色、改变光标位置以及将文本放置在终端窗口标题栏中。这些序列通常通过环境变量设置,如系统和用户配置文件脚本中的
PS1
/etc/profile
~/.bashrc
etc)。您可以执行命令
PS1='$'
,以减少这些字符的数量,但可能还需要重置其他变量和shell函数。感谢您的评论,我已编辑了我正在考虑的字符的问题,但无论如何,关于根本原因,您是对的。您可能希望尝试的一件事是设置
 TERM=“dumb”
在您的环境中(
$ENV{TERM}='dumb'
在Perl脚本中)。我猜它当前设置为类似于
xterm
vt100
。此变量通常通过SSH连接传播,并且
dumb
设置告诉远程端您的终端不理解转义序列,因此通常不会发送转义序列。