精华内容
下载资源
问答
  • Web页面执行shell命令

    千次阅读 2020-10-22 14:13:13
    本文以apache为web服务器为例 安装apache服务 yum -y install httpd 启动apache $ sudo systemctl restart httpd 创建shell脚本 $ cd /var/www/cgi-bin/ $ vim shell #!/bin/sh alias urldecode='sed "s@+...
    本文以apache为web服务器为例
    • 安装apache服务
    yum -y install httpd
    
    • 启动apache
    $ sudo systemctl restart httpd
    
    • 创建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"
    

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

    • 提供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>
    

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

    效果图如图所示

    cgi-bin目录执行shell脚本格式

    #!/bin/sh
    printf "Content-Type: text/plain\n\n"
    your_commands_here
    

    安全性优化
    限制用户访问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
    
    配置http页面账号密码访问,也可实现安全性 弊端 无法执行复杂的脚本命令,如带有" |等特殊符号的命令无法执行,如yum、top命令执行结果不完整、仅适用于简单带输出脚本命令,脚本运行账号为apache

    转载博客园:Mr黄瑞

    展开全文
  • 通过CGI实现在Web页面执行shell命令 实验环境: 腾讯云服务器centos7 Apache-httpd的安装: 使用命令安装 yum install httpd命令安装 yum install httpd #安装成功我们可以看到在/var/目录下会产生一个www的目录,...

    通过CGI实现在Web页面上执行shell命令

    实验环境:

    腾讯云服务器centos7

    Apache-httpd的安装:

    使用命令安装 yum install httpd命令安装

    yum install httpd 
    #安装成功我们可以看到在/var/目录下会产生一个www的目录,该目录下还包含/cgi-bin/ /html/连个目录 
    cgi-bin目录下主要存放cgi文件 
    html目录下主要存放html网页文件
    

    此时可启动httpd服务,查看启动后的状态;

    [root@VM_0_16_centos cgi-bin]# systemctl start httpd.service
    [root@VM_0_16_centos cgi-bin]#  systemctl status httpd.service
    ● httpd.service - The Apache HTTP Server
       Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
       Active: active (running) since Sat 2019-10-12 22:47:27 CST; 12h ago
         Docs: man:httpd(8)
               man:apachectl(8)
     Main PID: 9395 (httpd)
       Status: "Total requests: 61; Current requests/sec: 0; Current traffic:   0 B/sec"
       CGroup: /system.slice/httpd.service
               ├─ 9395 /usr/sbin/httpd -DFOREGROUND
               ├─ 9400 /usr/sbin/httpd -DFOREGROUND
               ├─ 9401 /usr/sbin/httpd -DFOREGROUND
               ├─ 9402 /usr/sbin/httpd -DFOREGROUND
               ├─ 9403 /usr/sbin/httpd -DFOREGROUND
               ├─ 9404 /usr/sbin/httpd -DFOREGROUND
               ├─10291 /usr/sbin/httpd -DFOREGROUND
               ├─10299 /usr/sbin/httpd -DFOREGROUND
               └─10300 /usr/sbin/httpd -DFOREGROUND
    
    Oct 12 22:47:27 VM_0_16_centos systemd[1]: Starting The Apache HTTP Server...
    Oct 12 22:47:27 VM_0_16_centos httpd[9395]: AH00558: httpd: Could not reliab...e
    Oct 12 22:47:27 VM_0_16_centos systemd[1]: Started The Apache HTTP Server.
    Hint: Some lines were ellipsized, use -l to show in full.
    

    此时打开浏览器,输入自己虚拟机IP地址:http://139.199.6.***,即可看到apache的默认界面;
    在这里插入图片描述
    服务器搭建完成创建shell脚本

    服务器通常会有一个www/cgi-bin的目录,我在这个目录下放一个shell脚本,名为liu.sh,记得给执行权限。

    [root@VM_0_17_centos cgi-bin]# vim liu.sh
    [root@VM_0_17_centos cgi-bin]# chmod 777 liu.sh
    [root@VM_0_17_centos cgi-bin]# cat -n liu.sh
         1  #!/bin/sh
         2  alias urldecode='sed "s@+@ @g;s@%@\\\\x@g" | xargs -0 printf "%b"'
         3  echo -e "Content-type: text/html\n"
         4  decoded_str=`echo $QUERY_STRING | urldecode`
         5  echo `$decoded_str`
    [root@VM_0_17_centos cgi-bin]#
    

    第1句表示是shell脚本,shell是默认的脚本

    第2句我网上抄的,具体原理也不懂,作用是解码URL, 当URL中有空格时,从客户端传过来会变成%20, 20是空格的16进制ASCII码。

    第3句是必须的,否则在客户端调用时就出错,是http协议规定的。text/html是以html的形式输出,比如就会在页面上显示一个文本框。text/plain形式就会在页面上原样显示这段代码。

    第4句就是将URL解码

    第5句是执行命令并返回给客户端

    然后在web网页输入http://139.199.6.165/cgi-bin/liu.sh?ls 会在网页上显示内容
    在这里插入图片描述

    就不是很好看,然后我先写一个html文件,放在www/html文件夹下,命名为hjw.html

    [root@VM_0_17_centos html]# vim hjw.html
    [root@VM_0_17_centos html]# cat -n hjw.html
         1  <html>
         2  <head>
         3  <script>
         4  function httpGet(url)
         5  {
         6          var xmlHttp = new XMLHttpRequest();
         7          xmlHttp.open("GET", url, false);
         8          xmlHttp.send(null);
         9          return xmlHttp.responseText;
        10  }
        11  function f()
        12  {
        13          var url = "http://139.199.6.165/cgi-bin/liu.sh?"
        14             + document.getElementById('in').value;
        15          document.getElementById('out').innerHTML = httpGet(url);
        16  }
        17  </script>
        18  </head>
        19  <body>
        20  <span>command </span><input id='in'></input>
        21  <button οnclick='f()'>send</button>
        22  <br/>
        23  <pre id='out'></pre>
        24  </body>
        25  </html>
    [root@VM_0_17_centos html]#
    

    在web浏览器中输入http://139.199.6.165/hjw.html,在方框输入命令下面就直接显示结果,也就是上面的一个包装。
    在这里插入图片描述

    到此就应该可以实现将服务器执行结果显示到网页上。

    展开全文
  • https://github.com/nickola/web-console/releases/在web中加入shell脚本控制台的我大致知道后台的情况了,但是这个界面如何实现,而且执行命令后的数据显示的格式都和linux中的控制台类似的格式...

    https://github.com/nickola/web-console/releases/

    bVy88Y

    在web中加入shell脚本控制台的

    我大致知道后台的情况了,但是这个界面如何实现,而且执行命令后的数据显示的格式都和linux中的控制台类似的格式

    https://github.com/nickola/web-console/blob/master/src/webconsole.main.php#L9-L32

    这个库封装的是 http://php.net/manual/zh/function.proc-open.php

    针对题主的更新:

    terminal的实现使用的是 https://github.com/jcubic/jquery.terminal

    exec,system,··,这些都可以执行shell命令,你可以做个ajax请求,返回命令结果,然后自己调下样式就行了

    web中的shell并不是真正的shell,通过后端处理接受命令并过滤,再使用php中的exec调用

    界面实现:

    1.前端绘制

    2.flash动画

    1.只能模拟样式

    2.exec等调用shell脚本的方式在操作

    3.毕

    展开全文
  • 需要发送请求到web后台,web后台中来执行Linux命令实现重启或者升级服务的功能。刚好在工作中遇到了这样的问题,做一个简要记录。nodejs可以利用子进程来调用系统命令或者文件,提供了与系统交互的重要接口。在上面...

    nodejs中怎么执行系统命令或者linux命令来完成一些功能呢?

    假设有这样一个需求,在页面中,点击按钮重启服务,升级系统之类的,服务是部署在linux下的C++项目。需要发送请求到web后台,web后台中来执行Linux命令实现重启或者升级服务的功能。刚好在工作中遇到了这样的问题,做一个简要记录。

    nodejs可以利用子进程来调用系统命令或者文件,提供了与系统交互的重要接口。在上面的文档中有较为详细的说明。

    这里主要用到的是

    1 child_process.exec(command[, options][, callback])

    首先需要安装一下

    npm install child_process --save

    先是前端的页面和逻辑

    vue项目,使用了element-ui

    重启服务

    js部分的methods中加一个对应的方法RestartServer(),点击按钮发送请求

    RestartVIServer(){

    var _this=this;

    _this.loading=true;

    this.$axios.get("action/OwnRestartServer").then(res=>{

    let data=res.data;

    _this.$message({

    type: 'success',

    message: "操作成功!系统正在重启,请稍等1-2分钟后刷新页面",

    duration:5000,

    showClose: true

    });

    }).catch(err=>{

    _this.$message({

    type: 'error',

    message: err,

    showClose: true

    });

    })

    },

    nodeJS ----web后台

    话不多说,直接上代码

    const Koa=require("koa");

    const router=require("koa-router")();

    const exec=require('child_process').exec;

    let reStartPro="sudo monit restart OwnServer";//这是一条重启服务的linux命令,也可以是执行其他功能的命令~

    //对exec进行一个简单的封装,返回的是一个Promise对象,便于处理。

    function doShellCmd(cmd){

    let str=cmd;

    let result={};

    return new Promise(function(resolve,reject){

    exec(str,function(err,stdout,stderr){

    if(err){

    console.log('err');

    result.errCode=500;

    result.data="操作失败!请重试";

    reject(result);

    }else{

    console.log('stdout ',stdout);//标准输出

    result.errCode=200;

    result.data="操作成功!";

    resolve(result);

    }

    })

    })

    }

    //加URL

    router.get('action/OwnRestartServer', async (ctx, next) => {

    let result=await doShellCmd(reStartPro);//调用exec

    console.log("[restartServer] ",result);

    ctx.response.status=result.errCode;

    ctx.response.body=result.data;

    });

    app.use(router.routes());

    app.listen(3000);

    console.log('app started at port 3000...');

    这样在点击重启服务按钮后,会发送127.0.0.1:3000/action/OwnRestartServer请求到web后台,web后台执行Linux命令完成需求功能。

    原创文章,转载请注明出处~~~

    展开全文
  • nodejs中怎么执行系统命令...需要发送请求到web后台,web后台中来执行Linux命令实现重启或者升级服务的功能。刚好在工作中遇到了这样的问题,做一个简要记录。 先查了一部分资料http://nodejs.cn/api/child_proc...
  • python中paramiko库可以执行远程linux服务器命令并接收返回结果,基于channel信道模式,channel允许用户在不同程序间进行通信,这是实现分布式实时应用的一部分如果你不想所有的message和event都经由数据库的话 ...
  • 使用说明1,shell命令 | python命令 | 系统支持的都可以2,不支持交互式显示 | 不支持动态内容显示3,傻瓜式操作(页面点击链接一次,执行一次脚本内容)|可以设置页面自动刷新,实现重复执行脚本使用要求Linux系统...
  • 跟着官方文档做完之后,发现在web页面中显示「远程命令执行」,但是在agent服务器中查看时,实际上该脚本未被执行。 通过排查和测试所有步骤,最后发现其实是少注释一个参数导致。 ##解决 编辑sudoer文件,注释掉...
  • 172.20.10.412实验流程端口扫描端口详细信息探测命令:nmap -T4 -A -v 靶机IP地址发现网站下的robots.txt中包含几个敏感目录web站点详细信息探测web目录爆破访问robots.txt,对其中的敏感目录进行查看其中/nothing为...
  • shell编程和unix命令

    2015-02-16 15:41:39
    2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 ...
  • BMZCTF WEB shell_exec

    2021-01-25 11:13:37
    尝试了几个命令执行的方法,均无返回结果: 查看源代码: 发现了下面的命令: ping -c 2 "$_POST[ip]" 2>&1 后面的2>&1的意思是:标准错误重定向到标准输出。 也就是说我们在网页的输入,当遇错时,...
  • 命令执行与反序列化

    2020-12-10 08:36:14
    路由器、防火墙、自动化运维平台、入侵检测等web管理页面 远程系统命令执行 一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口 assert system ``(反单引号) exec shell_exec pcntl_...
  • 2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 ...
  • 2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 ...
  • 1 通过hbase的web监控页面查询工作状态发现Regions in Transition区域有长时间未执行的任务,此时需要关闭hbase-master并重启,再这个问题处理过程中我直接使用/etc/init.d/hbase-master restar命令集群并执行一下...
  • https://github.com/nickola/web-console/releases/在web中加入shell脚本控制台的我大致知道后台的情况了,但是这个界面如何实现,而且执行命令后的数据显示的格式都和linux中的控制台类似的格式回复内容:...
  • shell

    2008-06-25 16:36:10
    使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16...执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章...
  • 是有这样的场景的,再比如,我现在需要点击一个按钮执行服务器上的一个shell脚本,脚本会把执行过程中的信息输出到一个文件sh.log中,我现在需要实时展示sh.log的内容,跟上面的那个日志文件也是一个道理。...
  • 背景概述 shell所需要的技术基础 第1章什么是shell shell是一个命令解释器,非编译语言,弱类型语言(无需定义变量类型就可以使用)作用是解释执行用户...针对于Web页面开发 Perl语言: 小白与大佬差距太大...
  • Linux shell编程指南

    2015-05-29 22:40:12
    2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 ...
  • 软件介绍通过websoket执行服务器命令,增强安全性,用户分级,方便部署让普通用户在未获得linux账号的前提下执行一些linux或mac上的shell通过config.json配置可执行命令和用户权限Websocket Shellweb目录可以部署在...
  • Super ShellSuper Shell 简介 后端配置说明 前端配置说明 API Document ...一个web页面搞定一打shell窗口 后端简单配置即可不用输入账号密码 历史命令功能方便命令的再次执行 更有Api可以方便其他应

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 159
精华内容 63
关键字:

web页面执行shell命令