我有一个奇怪的问题。我编写了一个脚本,它基本上是使用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退出,否则它不会显示在屏幕上。
请问任何人可以帮助解决这里的问题吗?
答案 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");