【发布时间】:2023-12-08 23:54:01
【问题描述】:
我的目标是通过 Perl CGI 脚本启动/停止服务(如 httpd、sshd、iptables 等)。
#!/usr/bin/perl
use strict;
use warnings;
print "content-type:text/html\n\n";
print <<EOM;
<html>
<body>
EOM
`/etc/init.d/httpd stop`;
my $res=`/etc/init.d/httpd status`;
print <<EOM;
<h3>$res</h3>
</body>
</html>
EOM
这里 back tics 中的第一个命令不起作用,而分配给 $res 的第二个命令正在起作用。 浏览器输出如下:
httpd (pid 15657) is running...
【问题讨论】:
-
您是否尝试过查看运行停止命令的输出?
-
可能运行CGI脚本的用户没有启动/停止服务的权限。
-
我说得对吗:您试图在 HTTP 服务器为您的脚本提供服务时停止它?就像开车时卸下车轮一样?
-
我想知道他是如何尝试重新开始的...... ;)
-
如果 httpd 服务已停止,那么我的浏览器中会出现一个错误,表明该服务已停止。但问题是它的 httpd 或任何其他服务 - 它不是工作。如果用户在运行脚本时是 apache,那么它如何显示状态。我的意思是用户可能没有这样做的权限。