侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

Apache执行Python脚本

2023-12-02 星期六 / 0 评论 / 0 点赞 / 81 阅读 / 4255 字

由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样:      因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全

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

  

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

  

vim /etc/httpd/conf/httpd.confLoadModule cgid_module modules/mod_cgid.soAddHandler cgi-script .cgi .pyScriptAlias /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-8print "Content-type:text/html"printprint '<html>'print '<head>'print '<title>Hello</title>'print '</head>'print '<body>'import sysimport subprocessreload(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 errprint '</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改一下文件格式然后保存就可以了。

广告 广告

评论区