无法在perl

时间:2015-07-21 15:05:36

标签: perl ssh mod-perl

我有一个奇怪的问题。我编写了一个脚本,它基本上是使用ssh在远程服务器上运行perl脚本。

此脚本工作正常但在完成上述操作后,它将要求用户选择下一个操作。

它显示了命令提示符中的选项,但是当我提供任何输入时,即使在输入后它也没有显示在屏幕上,它也保持不变。

我没有得到确切的问题,但似乎ssh命令存在一些问题,因为如果我正在评论ssh命令它运行正常。

OPERATION:
print "1: run the script in remote server \n2: Exit\n\nEnter your choice:";
my $input=<STDIN>;
chomp($input);
..........
sub run_script()
{
  my $com="sshg3.exe server -q --user=user --password=pass -exec script >/dev/null";
system("$com");

goto OPERATION;
}

完成此ssh脚本后,它将显示在屏幕中:

1:运行远程脚本 2:退出

输入您的选择:

但是当我提供任何输入时,除非我使用crtl C退出,否则它不会显示在屏幕上。

请问任何人可以帮助解决这里的问题吗?

3 个答案:

答案 0 :(得分:2)

ssh的经典问题之一是 - 通常以交互方式运行,因此默认会附加STDIN

这可能导致STDIN而不是您的脚本使用ssh

请尝试使用ssh -n

答案 1 :(得分:1)

根据https://support.ssh.com/manuals/client-user/62/sshg3.html,可以选择重定向输入使用--dev-null (*nix) or --null (Windows)

-n, --dev-null (Unix), -n, --null (Windows)
Redirects input from /dev/null (Unix) and from NUL (Windows).

答案 2 :(得分:1)

如果-n选项不可用,您可以在命令提示符中重定向输出。

试试这个可能对你有用的。

system("$com />null");