在Perl CGI中,如何使用UNIX命令?

在Perl CGI中,如何使用UNIX命令?,perl,cgi,Perl,Cgi,我试图从Perl CGI脚本运行ssh,mkdir。它不起作用了。但在正常的Perl脚本中,它运行良好。有谁能告诉我如何在Perl CGI脚本中运行命令吗?system()或popen()可能是您要找的,如果您觉得脏,我想您也可以使用反刻度。system()或popen()可能是您要找的,如果您感觉脏了,我想您也可以使用back ticks。如果您通过Web服务器运行此脚本,则活动用户(例如“nobody”、“www”等)可能没有必要的权限执行命令,如mkdir和ssh。如果是这样的话,perl

我试图从Perl CGI脚本运行
ssh
mkdir
。它不起作用了。但在正常的Perl脚本中,它运行良好。有谁能告诉我如何在Perl CGI脚本中运行命令吗?

system()或popen()可能是您要找的,如果您觉得脏,我想您也可以使用反刻度。

system()或popen()可能是您要找的,如果您感觉脏了,我想您也可以使用back ticks。

如果您通过Web服务器运行此脚本,则活动用户(例如“nobody”、“www”等)可能没有必要的权限执行命令,如
mkdir
ssh
。如果是这样的话,perl就无法解决这一问题。您可以通过以下方式测试活动用户:

print "The active user is: ", `whoami`;

设置web用户权限以创建文件和执行命令也是一个安全问题。

如果您通过web服务器运行此脚本,则活动用户(例如“无人”、“www”等)可能没有必要的权限执行命令,如
mkdir
ssh
。如果是这样的话,perl就无法解决这一问题。您可以通过以下方式测试活动用户:

print "The active user is: ", `whoami`;

设置web用户权限以创建文件和执行命令也是一个安全问题。

是否需要运行unix命令?Perl有一个内置的,并且有处理SSH的模块。通常情况下,CGI进程的能力或对系统的访问将受到限制。在Perl中做的越多越好。

是否需要运行unix命令?Perl有一个内置的,并且有处理SSH的模块。通常情况下,CGI进程的能力或对系统的访问将受到限制。在Perl中做的越多越好。

实际的代码会很有趣。哪个命令在“普通脚本”中有效,而在“CGI”中无效?您会收到什么错误消息(
$!
)?在demo.pl中,我正在使用系统(“ssh”)username@machinename在demo.cgi中,我使用的是同一个命令,它不起作用,即使是用于创建目录的系统命令,在正常的perl脚本中也能正常工作。但不是在perl cgi中。命令是:系统(“mkdir dirname”)<代码>系统不捕获标准输出。如果您在bash中尝试脚本时看到它“工作”,那是因为您在perl进程的后台看到打印到终端的stdout。perl无法使用这些数据,Web服务器也可能无法使用这些数据。使用
qx()
或倒勾来捕获标准输出。实际的代码会很有趣。哪个命令在“普通脚本”中有效,而在“CGI”中无效?您会收到什么错误消息(
$!
)?在demo.pl中,我正在使用系统(“ssh”)username@machinename在demo.cgi中,我使用的是同一个命令,它不起作用,即使是用于创建目录的系统命令,在正常的perl脚本中也能正常工作。但不是在perl cgi中。命令是:系统(“mkdir dirname”)<代码>系统不捕获标准输出。如果您在bash中尝试脚本时看到它“工作”,那是因为您在perl进程的后台看到打印到终端的stdout。perl无法使用这些数据,Web服务器也可能无法使用这些数据。使用
qx()
或backticks来捕获标准输出。是的,我正在通过Web服务器运行。那么,是否有任何方法可以通过Perl CGI使用SSH登录到另一台计算机,对于SSH,我不需要密码。@user970553我已经为您提供了回答该问题所需的信息。是的,我正在通过Web服务器运行。那么,有没有办法通过Perl CGI使用SSH登录到另一台机器,对于SSH,我不需要密码。@user970553我已经为您提供了回答该问题所需的信息。