nginx + fcgiwrap 创建一条运行远程 shell 的通路

有时候,可能有这样一种情况:即通过访问一个 http 请求,运行一下某台远程机器上的一个 shell 脚本,比如:用来启动一个测试,用来发送一个邮件,或者短信通知一下管理员,诸如此类的一个任务,等等;

安装 python,或者 php 这类脚本当然可以实现这类需求,其实还有一个更简单的做法,就是 fcgiwrap;本文就简单说一下其原理。

环境
安装 fcgiwrap
install -d -m 755 /usr/local/sbin
install -m 755 fcgiwrap /usr/local/sbin
install -d -m 755 /usr/local/man/man8
install -m 644 fcgiwrap.8 /usr/local/man/man8
nginx.conf 片段示例
  location ~ (\.sh|\.lua)$ {
    root /home/example/autotest;

    include fastcgi_params;
    fastcgi_pass unix:/var/run/fcgiwrap.socket;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
cpuinfo.sh 示例
#!/bin/sh
# -*- coding: utf-8 -*-
NAME="cpuinfo"
echo -e "X-Test-Author: Michael\r\n"
echo "<html><head>"
echo "<title>$NAME</title>"
echo '<meta name="description" content="'$NAME'">'
echo '<meta name="keywords" content="'$NAME'">'
echo '<meta http-equiv="Content-type" content="text/html; charset=UTF-8">'
echo '<meta name="ROBOTS" content="noindex">'
echo "</head><body><pre>"
echo -e "`date`\n"
echo -e "uname -a"
uname -a
echo -e "\ncpuinfo"
#cat /proc/cpuinfo
echo "</pre></body></html>"
参考资料
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容