本文以apache为web服务器为例

  1. 安装apache服务
    yum -y install httpd
  2. 启动apache
    systemctl restart httpd
  3. 创建shell脚本
    cd /var/www/cgi-bin/
    vim shell
    #!/bin/sh
    alias urldecode='sed "s@+@ @g;s@%@\\\\x@g" | xargs -0 printf "%b"'
    echo -e "Content-type: text/plain\n"
    decoded_str=`echo $QUERY_STRING | urldecode`
    echo -e "`$decoded_str` \n"

    shell

    测试:在浏览器中输入http://127.0.0.1/cgi-bin/shell?pwd,即可列出目录

  4. 提供web接口
    cd /var/www/html
    vim index.html
    <html>
    <head>
    <script>
    function httpGet(url)
    {
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.open("GET", url, false); // false: wait respond
    xmlHttp.send(null);
    return xmlHttp.responseText;
    }
    function f()
    {
    var url = "http://127.0.0.1/cgi-bin/shell?"+ document.getElementById('in').value;
    document.getElementById('out').innerHTML = httpGet(url);
    }
    </script>
    </head>
    <body>
    <span>command: </span>
    <input id='in'></input>
    <button onclick='f()'>send</button>
    <br/>
    <pre id='out'></pre>
    </body>
    </html>

    index.html

    注意修改代码中ip,更改为服务器ip或域名

  5. 效果图如图所示
  6. cgi-bin目录执行shell脚本格式
    #!/bin/sh
    printf "Content-Type: text/plain\n\n"
    your_commands_here
  7. 安全性优化
    限制用户访问cgi-bin目录,修改/etc/httpd/conf/httpd.conf
    <Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
    Deny From all
    Allow From 127.0.0.1 your-ip-address
    </Directory>
    配置http页面账号密码访问,也可实现安全性
  8. 弊端
    无法执行复杂的脚本命令,如带有" |等特殊符号的命令无法执行,如yum、top命令执行结果不完整、仅适用于简单带输出脚本命令,脚本运行账号为apache

Web页面执行shell命令的更多相关文章

  1. 通过web php 执行shell脚本,获取的结果与直接在命令行下获取的结果不同。

    公司项目中的一项小功能,统计设备的连接数.其中用到shell脚本来获取已连接设备的统计.使用命令 /bin/netstat -an| grep ESTABLISHED | awk '{print $4 ...

  2. python中执行shell命令的几个方法小结

    原文 http://www.jb51.net/article/55327.htm 最近有个需求就是页面上执行shell命令,第一想到的就是os.system, os.system('cat /proc ...

  3. python中执行shell命令的几个方法小结(转载)

    转载:http://www.jb51.net/article/55327.htm python中执行shell命令的几个方法小结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014- ...

  4. c++ cgi执行shell命令l发送qq邮件mailx

    #include <cstdlib> //随机数 #include <iostream> #include <cstdio> //popen函数调用的需要 #inc ...

  5. Linux远程执行Shell命令或脚本

    ## 远程执行shell命令 ssh [user]@[server] '[command]' # eg. ssh root@192.168.1.1 'uptime' ## 远程执行本地shell脚本 ...

  6. vim中执行shell命令

    1):!command   不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容   例如   :!ls -l   特别的可以运行:!bas ...

  7. Android Java执行Shell命令

    最新内容建议直接访问原文:http://www.trinea.cn/android/android-java-execute-shell-commands/ 主要介绍Android或Java应用中如何 ...

  8. subprocess模块还提供了很多方便的方法来使得执行 shell 命令

    现在你可以看到它正常地处理了转义. 注意 实际上你也可以在shell=False那里直接使用一个单独的字符串作为参数, 但是它必须是命令程序本身,这种做法和在一个列表中定义一个args没什么区别.而如 ...

  9. nodejs 执行shell 命令

    有需要从前端操作服务器执行shell命令的需求 建立一个process.js文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 var process =  ...

随机推荐

  1. Python是如何进行内存管理

    三个方面:一对象的引用计数机制,二垃圾回收机制,三内存池机制 一.对象的引用计数机制 Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数. 引用计数增加的情况: 1,一个对象分 ...

  2. 行政区划sql数据脚本

    行政区划sql数据脚本 IF (EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TB_Province]') ...

  3. p211有界自共轭算子T是实数集合的子集

    对条件 取非   是 ∉谱集合的实数 才对  现在是  入  属于正则点集 他  然后  又说T 的谱是实数 这不矛盾吗 这里根据   必要性    推出 蓝色和红色矛盾    矛盾就是 这是谱点 然 ...

  4. 后台管理系统之系统运行日志开发(Java实现)

    一,实现运行日志记录在文件中,并实现日志分包记录,项目出问题后方便定位分析.效果如图: 二,代码实现(springboot项目) 只需要在resources目录下新建:logback-spring.x ...

  5. C#复习笔记(4)--C#3:革新写代码的方式(用智能的编译器来防错)

    用智能的编译器来防错 本章的主要内容: 自动实现的属性:编写由字段直接支持的简单属性, 不再显得臃肿不堪: 隐式类型的局部变量:根据初始值推断类型,简化局部变量的声明: 对象和集合初始化程序:用一个表 ...

  6. [转帖]Linux分页机制之概述--Linux内存管理(六)

    Linux分页机制之概述--Linux内存管理(六) 2016年09月01日 19:46:08 JeanCheng 阅读数:5491 标签: linuxkernel内存管理分页架构更多 个人分类: ┈ ...

  7. [转帖]K8H3D 病毒 腾讯御剑的解析

    https://weibo.com/ttarticle/p/show?id=2309404344350225132710 永恒之蓝下载器木马又双叒叕升级了新的攻击方式​​ 背景 腾讯安全御见威胁情报中 ...

  8. Springboot自定义过滤器Filter

    前言:自己写了个Springboot项目,最近写的功能越来越多,结合业务已经要写过滤器Filter来过滤处理一些请求. 在网上看了几篇博客,总结如下: 过滤器配置方式有两种: 1.通过@WebFilt ...

  9. java的强制类型转换

    java强制类型转换  详细连接https://www.cnblogs.com/kuangwong/p/6198862.html 在Java项目的实际开发和应用中,常常需要用到将对象转为String这 ...

  10. Laravel 出现 No application encryption key has been specified.

    若文件根目录下没有 .env 1..env.example 改名使用命令 copy 修改为 .env 2.使用命令 php artisan key:generate  获取密码,自动保存到 .env3 ...