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

  

  因为线上有现成的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改一下文件格式然后保存就可以了。

最新文章

  1. 【C#】ConcurrentBag&lt;T&gt; 方法
  2. Android Include标签
  3. Android 调用系统的分享[完美实现同一时候分享图片和文字]
  4. gcc 生成动态库时-fpic选项是什么意思。
  5. js判断是否全是相同的字符串
  6. Java反射机制简单使用
  7. Android学习总结——SharedPreferences
  8. 驱动: i2c驱动 &gt;&gt;&gt;&gt;
  9. 用NPOI实现导入导出csv、xls、xlsx数据功能
  10. python 常见错误和异常 函数 正则表达式及多线程编程
  11. 【深度学习篇】--神经网络中的池化层和CNN架构模型
  12. [POJ2054]Color a Tree (并查集+贪心)
  13. PostgreSQL安装和创建用户和创建数据库
  14. JAVA自学笔记23
  15. tab选项卡实例
  16. vim 脚本——插件
  17. 使用 --image-repository 解决kubeadm 安装k8s 集群 谷歌镜像墙的问题
  18. JVM 目录
  19. ThreadPoolExecutor参数讲解
  20. Linux Shell脚本入门--wc命令

热门文章

  1. 网页提交中文到WEB容器的经历了些什么过程....
  2. Socket聊天程序——客户端
  3. jQuery动画-圣诞节礼物
  4. 【开源】.Net Aop(静态织入)框架 BSF.Aop
  5. RSA非对称加密,使用OpenSSL生成证书,iOS加密,java解密
  6. C#——传值参数(2)
  7. 设计模式C#合集--工厂方法模式
  8. FineReport:关于扩展行列求各种条件下的函数运用
  9. 学习笔记:发现一个IE版本判断的好方法
  10. Marmoset Toolbag中的角色布光技巧 by Joe”EarthQuake”Wilson