2014-09-04 90 views
1

回车键我有以下perl脚本保存从命令的输出到一个文本文件模拟压在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) 

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

我试图与Expect(无法得到它安装),并与echo -ne '\n'

+0

试着用管道'yes“”'给你的命令发送输入 - 在终端提示符下的测试,只要先输入 - 按Ctrl-C放弃。 – 2014-09-04 10:22:38

回答

1

大多数交互式命令,就像你正在使用的一个,接受一些标志或某些命令禁用分页。有时,将它们的stdin流连接到不是TTY的东西(例如/dev/null)也适用。

查看IBM dsmadmc文档,我看到它接受选项-outfile=save.out。使用它而不是标准的shell重定向可能适用于你的情况。

+0

我不知道这个选项的存在,它做到了! – Noosrep 2014-09-04 11:26:29