我是perl的新手,我想在我的脚本上使用屏幕输入。这是我的脚本,我希望从键盘输入IOS命令。可以有人告诉我我错在哪里。问题我现在的脚本没有读取我的键盘输入,我不确定是否可以处理我的情况。谢谢!
# ### Show #########################################################
$cmd = <STDIN>;
chomp ($cmd);
$show_error = "";
if ($ssh_switch eq 'yes') {
ssh_access();
}
print "\n",h2($host . ' - ' . $cmd);
@output=$cmd;
print hr(),"\n";
}
}
#########################################################################
答案 0 :(得分:5)
CGI旨在接受完整的HTTP请求,然后吐出完整的HTTP响应。
它无法以交互方式工作。
如果要编写需要键盘输入的脚本,请不要使用CGI。
答案 1 :(得分:2)
事实上,CGI确实使用STDIN
。它用于传递POST
请求的正文。试试这个脚本
#!/usr/bin/perl
print "Content-Type: text/plain\r\n\r\nYou entered: ";
print while <STDIN>;
和POST
一些数据,例如
$ echo "Just test" | POST http://localhost/yourscript.pl
You entered: Just test
(POST
是来自LWP
CPAN发布的程序)
因此,您可以使用从STDIN
读取的命令来指导您的脚本,尽管它非常不安全!
答案 2 :(得分:1)
CGI确实允许通过STDIN输入;试试CGI->new(\*STDIN)
。
虽然可能不是你想要输入的东西。您能举例说明您的输入是什么样的吗?
啊,它看起来像你想要的那样:从命令行运行您的脚本,例如:perl scriptname 'Submit=1&Devices=router1&Devices=router2'
然后在STDIN上提供您的cisco命令(并获取html输出,这可能不方便),或者
在浏览器中运行您的脚本,在这种情况下,您应该将STDIN用法替换为输入标记以输入命令并从该命名参数中获取命令
再看一遍,我看到你已经有一个输入标签“搜索”,你只是没有使用它。
尝试将<STDIN>
替换为$cgi->param('search')
并将搜索添加到“确保输入数据”检查。