gpt4 book ai didi

perl - 从 Perl 中的 SSH 输出中去除颜色细节

转载 作者:行者123 更新时间:2023-12-04 05:18:19 24 4
gpt4 key购买 nike

我有一个通过 SSH 登录到 pfSense/BSD 框的期望脚本,它由 Perl 脚本调用并将输出传递回 Perl 脚本(一个 RANCID 插件)。

目前我得到以下输出;

+ spawn ssh -2 -x -l rancid my-pfsense-device.fqdn.com
+ Password:
+ Last login: Wed Dec 19 10:28:47 2012 from 89.21.224.35
+ Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
+ The Regents of the University of California. All rights reserved.
+
+
+ [0;1;33m[ [0;1;37m2.0.1-RELEASE [0;1;33m] [0;1;33m[ [0;1;37mrancid [0;1;31m@ [0;1;37mmy-pfsense-device.fqdn.com [0;1;33m] [0;1;32m/home/rancid [0;1;33m( [0;1;37m1 [0;1;33m) [0;1;36m [0;1;31m: [0;40;37m
uname -a
+ FreeBSD my-pfsense-device.fqdn.com 8.1-RELEASE-p6 FreeBSD
8.1-RELEASE-p6 #0: Mon Dec 12 18:59:41 EST 2011
root@FreeBSD_8.0_pfSense_2.0-snaps.pfsense.org:/usr/obj./usr/pfSensesrc/src/sys/pfSense_wrap.8.i386
i386
+ [0;1;33m[ [0;1;37m2.0.1-RELEASE [0;1;33m] [0;1;33m[ [0;1;37mrancid [0;1;31m@ [0;1;37mmy-pfsense-device.fqdn.com [0;1;33m] [0;1;32m/home/rancid [0;1;33m( [0;1;37m2 [0;1;33m) [0;1;36m [0;1;31m: [0;40;37m
cat /cf/conf/config.xml
+ <?xml version="1.0"?>
+ <pfsense>

这里的问题是,当从我的桌面通过 SSH 登录时,登录提示看起来像这样;
[2.0.1-RELEASE][username@my-pfsense-device.fqdn.com]/home/username(1):

但这有多种颜色。正如您在上面的输出中看到的那样,SSH 正在传递所有着色信息,然后将其输出到我的期望脚本。在上面的输出中,同一行看起来像这样;
[0;1;33m[ [0;1;37m2.0.1-RELEASE [0;1;33m] [0;1;33m[ [0;1;37musername [0;1;31m@ [0;1;37mmy-pfsense-device.fqdn.com [0;1;33m] [0;1;32m/home/username [0;1;33m( [0;1;37m1 [0;1;33m) [0;1;36m [0;1;31m: [0;40;37m

有没有办法可以编写脚本?它是一种标准颜色格式并且被正则表达式删除,或者我可能需要更改我的 SSH 客户端上的选项以忽略着色信息?

最佳答案

终端能否显示颜色由TERM 决定。环境变量。它通常设置为 xterm , linuxscreen (也许带有 -256color 后缀以获得更多好处)。希望对方的shell(更重要的是:shell初始化脚本)注意TERM并且仅在调用方的终端实际上​​支持颜色时才尝试使用颜色。

您可以尝试在调用 ssh 之前设置该变量。 .对于“没有交互和颜色功能的终端”,通常将其设置为 dumb .

关于perl - 从 Perl 中的 SSH 输出中去除颜色细节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13970447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com