无法在 perl 中接受用户输入

unable to take user input in 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 退出它。

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

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

这可能会导致 STDINssh 而不是您的脚本消耗。

尝试使用 ssh -n 代替。

根据 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).

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

试试这个,它可能适合你。

system("$com />null");