`
ypyf3000
  • 浏览: 3013 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Writing a Python xinetd Server

阅读更多

Yesterday I discovered the xinetd; an internet services daemon. I immediately liked the idea of writing simple services that work on stdin and stdout but that can be accessed over the internet via sockets. So, I set out to write a simple Python server that can be integrated with xinetd. Here is the server:
#!/usr/bin/python
import sys

request = ''
while True:
  data = sys.stdin.readline().strip()
  request = request + data + '<br>'
  if data == "":
    print 'HTTP/1.0 200 OK'
    print ''
    print '<html><body><p>'+request+'</p></body></html>'
    sys.stdout.flush()
    break;
I am assuming that a web browser will connect to my server, the server will then 'echo' the request back to the browser allowing the  browser to display the request. As you can see the input is received via stdin and output is returned via stdout.

If xinetd is not already installed then you will obviously have to install it first. Since I am doing this on Ubuntu the following works for me:
sudo apt-get install xinetd
After installing xinetd you need to create a config file for the service. I called my service http_echo and my config file (located in /etc/xinetd.d) is named similarly; http_echo. My configuration file looks like this:

service http_echo
{
    protocol       = tcp
    disable        = no
    port           = 9991
    flags          = REUSE
    socket_type    = stream
    wait           = no
    user           = johan
    server         = /home/johan/code/http_echo/http_echo
    log_on_failure += USERID
}
Most of this file is quite self explanatory. Please refer to the xinetd documentation for more information.The port property should make the service run on the specified port without having to add an entry in the services file (/etc/services) . I have had to add an entry in my services file to make this setup work:
http_echo    9991/tcp
Then simply restart the xinetd service:
sudo /etc/init.d/xinetd restart
Pointing a browser to the server on the specified port (9991), will yield the pleasing results below:
GET / HTTP/1.1
Host: localhost:9991
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.33 Safari/532.0
Cache-Control: max-age=0
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
And that is how simple it is to write a service in Python that runs under xinetd.
分享到:
评论

相关推荐

    tftp (可以使用 包含tftp-server xinetd tftp)

    包含 tftp-server-0.42-3.1.i386.rpm xinetd-2.3.14-18.fc9.i386.rpm tftp-0.42-3.1.i386.rpm

    使用xinetd搭建VNCServer

    ### 使用xinetd搭建VNCServer #### 一、引言 在远程访问技术中,VNC(Virtual Network Computing)是一种被广泛使用的图形桌面共享系统。通过VNC,用户可以在本地计算机上操作远程计算机的图形界面,这对于系统管理...

    xinetd-master.zip

    《深入理解Xinetd:新一代网络守护进程服务》 Xinetd,全称为extended internet daemon,中文可译为“扩展的互联网守护进程”,是Linux系统中一个强大的网络服务管理工具。它作为一款超级Internet服务器,负责管理...

    xinetd-2.3.14-40.el6.x86_64.rpm

    在命令行下执行 rpm -ivh xinetd*.rpm 进行安装,安装完后,编辑 /etc/xinetd.d/telnet,把disable 的yes 改为no 。执行命令 service xinetd start 即可启动服务,必要时关闭防火墙

    xinetd.zip

    xinetd-2.3.14-40.el6.x86_64,xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器。经常用来管理多种轻量级Internet服务。xinetd提供类似于inetd+tcp_wrapper的功能...

    简析Suse Linux的xinetd服务.pdf

    《简析Suse Linux的xinetd服务》 Suse Linux是一款广泛应用于企业级服务器的开源操作系统,其xinetd(extended Internet services daemon)服务是系统中不可或缺的一部分。xinetd作为一款超级守护进程,主要负责...

    telnet-server-0.17-47.el6.x86_64和telnet和xinetd

    本话题主要围绕`telnet-server-0.17-47.el6.x86_64`、`telnet`和`xinetd`这三个关键组件进行展开,解释它们的功能、安装过程以及如何配置以启用telnet服务。 首先,`telnet-server`是提供telnet服务的软件包,它...

    用xinetd简化Linux与Windows的通讯.pdf

    【标题】: "用xinetd简化Linux与Windows的通讯" 【描述】: 本文讨论了如何使用xinetd服务来简化Linux系统与Windows之间的通信。通过xinetd,可以在Linux上实现自定义服务,同时客户端是用C++ Builder在Windows上...

    xinetd-2.3.14

    xinetd-2.3.14,包含2个适用不通版本号的包。linux的xinetd的安装,好像区分32位和64位,多给个选择,进行安装

    xinetd完整代码

    **xinetd(eXtended Internet Services Daemon)** 是Linux操作系统中的一种超级服务器,它负责管理和控制基于网络的服务。这个“xinetd完整代码”很可能是xinetd的源码包,版本为2.3.15。通过研究这个源码,我们...

    xinetd-2.3.15-13.el7.x86_64.rpm

    xinetd rpm文件,用来配合haproxy,通过xinetd提供的http服务mycatstatus来让Haproxy进行Mycat服务检测,即检测Mycat存活状态。Haproxy通过调用该http服务获取Mycat运行状态。

    telnet离线安装包rpm(含xinetd)

    telnet离线安装包rpm(含xinetd),适用于centOS6版本!

    xinetd-2.3.14-13.el5.x86_64.rpm

    xinetd-2.3.14-13.el5.x86_64xinetd-2.3.14-13.el5.x86_64xinetd-2.3.14-13.el5.x86_64xinetd-2.3.14-13.el5.x86_64xinetd-2.3.14-13.el5.x86_64xinetd-2.3.14-13.el5.x86_64xinetd-2.3.14-13.el5.x86_64

    xinetd-2.3.15.tar.gz

    超级服务xinetd最新源码下载。 xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。它能提供以下特色:  * 支持对tcp、udp、RPC服务(但是当前对RPC的支持不够稳定)  * 基于时间段的访问控制  * 功能...

    Linux版的telnet安装包telnet、telnet-server、xinetd

    linux环境下telnet安装包,包含: telnet-client 客户端安装包、telnet-server服务端安装包和xinetd依赖包。想下载的时候到处都要积分!!!好生气,好不容易找到了1积分贡献出去,让那些5积分3积分的吃shi

    xinetd-2.3.14.tar.gz

    linux telnet服务守护进程,在命令行下执行 rpm -ivh xinetd*.rpm 进行安装,安装完后,编辑 /etc/xinetd.d/telnet,把disable 的yes 改为no 。执行命令 service xinetd start 即可启动服务,必要时关闭防火墙

    xinetd-2.3.14-34.el6.x86_64.rpm

    5. 如果打算安装telnet服务,可以使用`sudo yum install telnet-server`命令。 6. 最后,编辑`/etc/xinetd.d/telnet`配置文件,启用telnet服务,并设置相应的访问控制。 7. 重启xinetd服务以启动telnet服务。 请...

    xinetd-2.3.14-33.el6.x86_64.rpm

    xinetd,telnet-server守护进程,

    在xinetd环境下如何获取客户端IP地址

    ### 在xinetd环境下如何获取客户端IP地址 在Linux系统中,`xinetd`(Internet Services Daemon)作为超级服务守护进程,负责监听各种网络请求并启动相应的服务处理这些请求。由于`xinetd`环境下的服务器程序通常...

    xinetd-2.3.14-39.el6_4.x86_64

    xinetd,telnet-server守护进程,需安装相关包能够安装telnet-server包,记录一下,主要是便于下载方便。

Global site tag (gtag.js) - Google Analytics