python使用xinetd时遇到的问题

来源:互联网 发布:sql漏洞扫描工具 编辑:程序博客网 时间:2024/05/22 00:53

PYTHON网络编程基础P51 3.5.5

问题1:

将/etc/xinetd.conf按教程设置好后,telnet localhost 51423提示telnet: connect to address 127.0.0.1: Connection refused,发现xinetd并没有监听51423端口

解决方法:

xinetd设置中service指定的py文件必须具有执行权限,加上执行权限后重启xinetd即可正常运行


问题2:

通过inetd使用UDP的例子测试不成功,重启xinetd后确实在监听51424端口,但运行udp.py发现没有输出服务器返回的数据,客户端发出数据后会使xinetd不再监听51424端口。

服务器源代码如下:

#!/usr/bin/env pythonimport socket,time,syss = socket.fromfd(sys.stdin.fileno(),socket.AF_INET,socket.SOCK_DGRAM)message, address = s.recvfrom(8192)s.connect(address)print "test"for i in range(10):        s.send("Reply %d: %s" % (i+1,message))        time.sleep(2)s.send("OK, I'm done sending replies.\n")

xinetd配置:

service pythonnowaitexample{        flags = NAMEINARGS        type = UNLISTED        port = 51424        socket_type = dgram        protocol = udp        wait = no        user = root        server = /root/python/inetdudpserver.py        server_args = /root/python/inetdudpserver.py }

客户端udp.py源码:

#!/usr/bin/env pythonimport socket,syshost = sys.argv[1]textport = sys.argv[2]s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)try:        port = int(textport)except ValueError:        port = socket.getservbyname(textport,'udp')s.connect((host,port))print "Enter data to transmit: "data = sys.stdin.readline().strip()s.sendall(data)print "Looking for replies; press Ctrl-C or Ctrl-Break to stop."while 1:        buf = s.recv(20)        if not buf:                break        sys.stdout.write(buf)        sys.stdout.flush()        print buf

解决方法:

未解决。什么情况下会使xinetd停止监听某个端口?


问题3:

用udp.py测试inetdwaitserver.py仍然不成功,客户端发送数据后没有显示返回的数据,检查/var/log/messages日志记录为:

Jan 23 20:10:20 master xinetd[5421]: START: pythonnowaitexample pid=5450 from=::ffff:192.168.213.129Jan 23 20:10:20 master python: abrt: detected unhandled Python exception in /root/python/inetdwaitserver.pyJan 23 20:10:20 master xinetd[5421]: EXIT: pythonnowaitexample status=0 pid=5450 duration=0(sec)Jan 23 20:10:20 master abrtd: dumpsocket: New client connectedJan 23 20:10:20 master abrtd: dumpsocket: Saved Python crash dump of pid 5451 to /var/spool/abrt/pyhook-1422072620-5451Jan 23 20:10:20 master abrtd: Directory 'pyhook-1422072620-5451' creation detectedJan 23 20:10:20 master abrtd: Executable '/root/python/inetdwaitserver.py' doesn't belong to any packageJan 23 20:10:20 master abrtd: Corrupted or bad crash /var/spool/abrt/pyhook-1422072620-5451 (res:4), deletingJan 23 20:10:20 master abrtd: dumpsocket: Socket client disconnected


netdwaitserver.py源码如下:

#!/usr/bin/env pythonimport socket,time,sys,oss = socket.fromfd(sys.stdin.fileno(),socket.AF_INET,socket.SOCK_DGRAM)message,address = s.recvfrom(8192)localaddr = s.getsockname()s.close()pid = os.fork()if pid:        sys.exit(0)s2 = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)s2.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)s2.bind(localaddr)s2.connect(address)for i in range(10):        s2.send("Reply %d: %s" % (i+1,message))        time.sleep(2)s2.send("OK, I'm done sending replies.\n")

xinetd配置:

[root@master python]# cat /etc/xinetd.d/pythonnowaitexample service pythonnowaitexample{        flags = NAMEINARGS        type = UNLISTED        port = 51424        socket_type = dgram        protocol = udp        wait = yes        user = root        server = /root/python/inetdwaitserver.py        server_args = /root/python/inetdwaitserver.py }



0 0
原创粉丝点击