【问题标题】:Simulate pressing enter key in Perl在 Perl 中模拟按 enter 键
【发布时间】:2014-09-04 10:19:22
【问题描述】:

我有以下 perl 脚本,它将命令的输出保存到文本文件中

#!/usr/bin/perl 
use warnings;
use strict;
use Term::ANSIColor;

my $cmd_backupset=`ssh user\@ip 'dsmadmc -id=username -password=passwd "q backupset"' >> output.txt`;

open CMD, "|$cmd_backupset" or die "Can not run command $!\n";
print CMD "\n";
close CMD;

output.txt 的输出是这样的:

Text Text Text
...
more...   (<ENTER> to continue, 'C' to cancel)

脚本仍在终端中运行,当我按下回车键时,output.txt 文件会获取额外信息。但是,我必须按 Enter 30 次以上才能获得完整的输出。有没有办法自动化脚本,所以当 output.txt 中的最后一行是 more... 时,它会模拟按 Enter 键?

我已尝试使用Expect(无法安装)和echo -ne '\n'

【问题讨论】:

  • 尝试通过管道将yes "" 发送到您的命令以发送 Enter - 在终端提示符下进行测试,只需先输入 - 按 Ctrl-C 即可中止。

标签: perl enter keystroke simulate


【解决方案1】:

大多数交互式命令,例如您正在使用的命令,都接受一些标志或一些命令来禁用分页。有时,将他们的 stdin 流连接到不是 TTY 的东西(例如 /dev/null)也可以。

只需浏览 IBM dsmadmc 文档,我发现它接受了选项 -outfile=save.out。在您的情况下,使用它而不是标准的 shell 重定向可能会起作用。

【讨论】:

  • 我不知道这个选项的存在,它成功了!
猜你喜欢
  • 2015-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
  • 2016-02-25
  • 2017-04-29
  • 2016-12-08
  • 2013-07-06
相关资源
最近更新 更多