热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Bash命令未在ApacheCGIShell中运行-BashcommandnotrunninginApacheCGIShell

IhaveascriptthatrunswhenIclickabuttononthehttpserveronmylinuxmachine.Thefileis

I have a script that runs when I click a button on the http server on my linux machine. The file is in cgi-bin and is executable.

我有一个脚本,当我点击我的linux机器上的http服务器上的按钮时运行。该文件位于cgi-bin中并且是可执行的。

But it seems like two lines of this script arent working

但似乎这个脚本的两行不起作用

#!/bin/bash

IPADDR=`echo "$QUERY_STRING" | sed -n 's/^.*IPADDR=\([^&]*\).*$/\1/p' | sed "s/+/ /g"`
SUBNET=`echo "$QUERY_STRING" | sed -n 's/^.*SUBNET=\([^&]*\).*$/\1/p' | sed "s/+/ /g"`
DHCP=`echo "$QUERY_STRING" | sed -n 's/^.*DHCP=\([^&]*\).*$/\1/p' | sed "s/+/ /g"`

(2lines that arent working)

(2行不起作用)

sed -i.bak "s/IPADDR=.*/IPADDR=$IPADDR/g" test
sed -i.bak "s/NETMASK=.*/NETMASK=$SUBNET/g" test

echo "Content-type: text/html"
echo ""
DHCP=`echo "$QUERY_STRING" | sed -n 's/^.*DHCP=\([^&]*\).*$/\1/p' | sed "s/+/ /g"`
echo ""
echo "IP changed to: "
echo "$IPADDR 
" echo "SUBNET changed to: " echo "$SUBNET
" echo "DHCP $DHCP" echo ""

Contents of file test

文件测试的内容

DEVICE=p32p1
BOOTPROTO=static
DHCPCLASS=
HWADDR=00:01:2e:48:f0:f3
IPADDR=3333333333
NETMASK=4444444444
OnBOOT=yes

sed never changes the file.

sed从不更改文件。

Also here is my HTML

这也是我的HTML


Enter an IP Address: 
Enter a Subnet Mask:
Enable DHCP Disable DHCP

1 个解决方案

#1


1  

This must be a combination of filesystem permissions and SELinux configuration problem.

这必须是文件系统权限和SELinux配置问题的组合。

The filesystem part is easier to fix. Your web server process probably runs as the apache user, so make sure it has the correct permissions to the file you want to rewrite. To confirm the filesystem permissions are ok, temporarily disable SELinux and check if the writing works:

文件系统部分更容易修复。您的Web服务器进程可能以apache用户身份运行,因此请确保它对您要重写的文件具有正确的权限。要确认文件系统权限是否正常,请暂时禁用SELinux并检查写入是否有效:

echo 0 >/selinux/enforce

If this works, then turn SELinux back on:

如果这样做,那么重新打开SELinux:

echo 1 >/selinux/enforce

and then fix your SELinux settings. Here are some hints for that from this other answer, in particular:

然后修复SELinux设置。以下是其他答案中的一些提示,特别是:

You must either give the directory structure a context of httpd_sys_rw_content_t, or give them a context of public_content_rw_t and enable allow_httpd_anon_write and/or allow_httpd_sys_script_anon_write. See the httpd_selinux(8) man page for details.

您必须为目录结构提供httpd_sys_rw_content_t的上下文,或者为它们提供public_content_rw_t的上下文并启用allow_httpd_anon_write和/或allow_httpd_sys_script_anon_write。有关详细信息,请参见httpd_selinux(8)手册页。

In addition, I would rewrite your script like this:

另外,我会像这样重写你的脚本:

#!/bin/bash
cOnfig=/var/www/net.config

while IFS== read name value; do
    case $name in
        IPADDR) IPADDR=$value ;;
        SUBNET) SUBNET=$value ;;
        DHCP) DHCP=$value ;;
    esac
done <<(sed -e 's/&/\n/g' <<<$QUERY_STRING)

is_valid() {
    # todo: validate the input params
    return 1
}

if is_valid; then
    sed -i.bak e "s/IPADDR=.*/IPADDR=$IPADDR/g" -e "s/NETMASK=.*/NETMASK=$SUBNET/g" $config
    title='IP CHANGED'
    body=$(cat <
SUBNET changed to: $SUBNET 
DHCP $DHCP EOF ) else body='What are you trying to pull, mister?' fi cat <

推荐阅读
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
author-avatar
lifetime8_797
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有