文档章节

Apache执行Python脚本

drv
 drv
发布于 2016/12/28 11:31
字数 404
阅读 11
收藏 0

  由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样:

  

  因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里就不写了。

  

vim /etc/httpd/conf/httpd.conf

LoadModule cgid_module modules/mod_cgid.so

AddHandler cgi-script .cgi .py

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

<Directory "/var/www/cgi-bin">
   AllowOverride None
   Options +ExecCGI
   Order allow,deny
   Allow from all

#    Options Indexes FollowSymLinks MultiViews +ExecCGI
#    AllowOverride None
#    Options None
#    Order allow,deny
#    Allow from all
</Directory>
chmod -R 755  /var/www/cgi-bin/

  

#!/usr/bin/python
#coding=utf-8

print "Content-type:text/html"
print
print '<html>'
print '<head>'
print '<title>Hello</title>'
print '</head>'
print '<body>'

import sys
import subprocess

reload(sys)
sys.setdefaultencoding('utf-8')
print subprocess.call(["/bin/grep", "exception", "/var/log/error/20160706.log"])
print "<br>"
result1 = subprocess.Popen(["/bin/grep exception /var/log/error/20160706.log"], shell=True, stdout=subprocess.PIPE)
result = subprocess.Popen(["grep","not"],stdin=result1.stdout, stdout=subprocess.PIPE)
out,err = result.communicate()
print out.encode('utf-8')
print "<br>"
print err

print '</body>'
print '</html>'

 

 

 

  配置好后,用浏览器访问:

  

 

  因为之前目录不是在www下,而是/var/www/html/cgi-bin/,于是就怀疑suexec:

  

  

  然而改成/var/www/cgi-bin/依然不行,而且suexec也并木有错误日志,看Apache的错误日志:

  

  既然有第二句,那找不到文件应该不是aaa.py找不到,于是我直接执行了一下py脚本:

  

  这就很明显了,这python后面多了点东西,这明显是编码之类的问题,vim进aaa.py,用:set ff看了一下,原来因为这个脚本是在windows上创建的,所以格式是fileformat=dos,用:set ff=unix改一下文件格式然后保存就可以了。

© 著作权归作者所有

drv

drv

粉丝 2
博文 57
码字总数 75382
作品 0
东城
架构师
私信 提问
书籍:掌握Python脚本系统管理 Mastering Python Scripting for System Administrators - 2019.pdf

简介 主要特点 了解如何解决系统管理员的问题并自动执行日常活动 学习处理正则表达式,网络管理 构建GUI,网络抓取和数据库管理,包括数据分析 Python随着时间的推移不断发展,并扩展了与每个...

python人工智能命理
04/08
0
0
Django 站点部署和管理常用命令

原文:Django 站点部署和管理常用命令 作者:Breaker 通过 The Django Book 学习建立、部署和管理 Django 站点的笔记,内容重点 章节 12:部署 Django Django 与 The Django Book 版本对应关...

晨曦之光
2012/05/23
7.1K
0
初探Python CGI:搭建CGI编程调试环境

“CGI(Common Gateway Interface,通用网关接口) 是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。”(百度百科)Python语言自带CGI处理模块,可以通过编写python ...

SamYjy
2018/12/02
266
0
websocket shell

Websocket Shell ======================= web目录可以部署在任意的http服务器上,打开页面的浏览器需要跟server.py运行服务器在一个内网,因为他们需要建立socket链接 客户端的JavaScript通...

逐浪人
2015/07/13
296
0
用Python脚本实现对Linux服务器的监控

一、前言 二、概述 三、Python 版本说明 四、/proc 文件系统 五、对CPU监测 六、对系统负载监测 七、对内存信息的获取 八、对网络接口的监测 九、监控apache服务器进程的Python脚本 十、总结...

陈明乾
2018/07/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Xss过滤器(Java)

问题 最近旧的系统,遇到Xss安全问题。这个系统采用用的是spring mvc的maven工程。 解决 maven依赖配置 <properties><easapi.version>2.2.0.0</easapi.version></properties><dependenci......

亚林瓜子
37分钟前
2
0
Navicat 快捷键

操作 结果 ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中的sql语句 F6 打开一个mysql命令行窗口 ctrl+l 删除一行 ...

低至一折起
今天
7
0
Set 和 Map

Set 1:基本概念 类数组对象, 内部元素唯一 let set = new Set([1, 2, 3, 2, 1]); console.log(set); // Set(3){ 1, 2, 3 } [...set]; // [1, 2, 3] 接收数组或迭代器对象 ...

凌兮洛
今天
1
0
PyTorch入门笔记一

张量 引入pytorch,生成一个随机的5x3张量 >>> from __future__ import print_function>>> import torch>>> x = torch.rand(5, 3)>>> print(x)tensor([[0.5555, 0.7301, 0.5655],......

仪山湖
今天
5
0
OSChina 周二乱弹 —— 开发语言和语言开发的能一样么

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌:#今日歌曲推荐# 分享The Score的单曲《Revolution》 《Revolution》- The Score 手机党少年们想听歌,请使劲儿戳(这里) @批判派...

小小编辑
今天
2.9K
19

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部