无法在 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
。
这可能会导致 STDIN
被 ssh
而不是您的脚本消耗。
尝试使用 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");
我遇到了一个奇怪的问题。我编写了一个脚本,它基本上是 运行使用 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
。
这可能会导致 STDIN
被 ssh
而不是您的脚本消耗。
尝试使用 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");