我有一个 perl 脚本,它通过ssh
生成 ssh来自动记录我Expect.pm
。
它实际上工作得很好,这是我的输出:
$ ngh bestServerEver
GPG Pass :
root@**********'s password:
Linux **** 2.6.32-042stab059.7 #1 SMP Tue Jul 24 19:12:01 MSK 2012 x86_64 GNU/Linux
motd!!!!!!!!!!
Last login: Mon Feb 4 22:18:10 2013 from *******************
bash
[root@******:~]$ bash
[root@******:~]$
我试图在输入命令后抑制此输出以直接进入服务器外壳。像那样:
$ngh BestServerEver
root@server#
我试过这个答案: 如何在 Perl 程序中暂时抑制 STDOUT?
我也试过:
local (*OUT, *ERR);
open OUT, ">&STDOUT";
open ERR, ">&STDERR";
close STDOUT;
close STDERR;
print "don't print";
open STDOUT, ">&OUT";
open STDERR, ">&ERR";
当涉及标准 STDOUT 时,两者都可以,但 Expect 似乎是一种不同的句柄或其他类型。
我也试过设置:
$exp->stty("-echo");
但它并没有隐藏任何东西
最后,这是我的代码http://pastebin.com/pSL3AwBW如果您有一些提示可以告诉我如何隐藏该垃圾。