xinetd 服务调用 python 脚本(无法正确执行)

2023-12-01

我读到了这个:

您可以使用 xinetd 添加启动 python 脚本的服务。标准输入和输出将通过网络在所需端口上传输,因此您不需要修改脚本(input/raw_input 和 print 方法可以正常工作)。

因此,当建立到 192.168.240.37:65123 的 TCP 连接时,我使用自定义 xinet 服务来启动 script.py。该行为不符合期望/预期。

/root/script.py

#! /usr/bin/python
my_name = raw_input("Enter your name: ")
print my_name
quit()

/etc/xinetd.d/netunique-server

service netunique
{
    disable         = no
    id              = netunique-server
    type            = unlisted
    wait            = no
    socket_type     = stream
    protocol        = tcp
    user            = root
    server          = /usr/bin/python
    server_args     = /root/script.py
    port            = 65123
    flags           = IPv4 REUSE
    bind            = 192.168.240.37
}

systemctl 状态 xinetd

Nov 11 21:24:00 netunique.ourhome.com xinetd[2161]: xinetd Version 2.3.15 started with libwrap loadavg labeled-ne... in.
Nov 11 21:24:00 netunique.ourhome.com xinetd[2161]: Started working: 1 available service

telnet 192.168.240.37 65123(预期行为)

[root@netunique xinetd.d]# telnet 192.168.240.37 65123
Trying 192.168.240.37...
Connected to 192.168.240.37.
Escape character is '^]'.
Enter your name: John Smith          <-- I type name after prompt here
John Smith                           <-- Script prints entry back to screen
Connection closed by foreign host.   <-- Script does its quit()   

telnet 192.168.240.37 65123(实际行为)

[root@netunique xinetd.d]# telnet 192.168.240.37 65123
Trying 192.168.240.37...
Connected to 192.168.240.37.
Escape character is '^]'.
<blank>                              <-- no prompt as expected
John Smith                           <-- I enter some data and hit Enter
Enter your name: John Smith          <-- Hard to tell exactly what happened here
Connection closed by foreign host.   <-- Hard to tell exactly what happened here
[root@netunique xinetd.d]# 

当我说“很难确切地说出这里发生了什么”时,我的意思是很难判断上面的输出中“输入你的名字:”提示后出现的“John Smith”是否是 print 语句的结果,并且很难判断“连接被外部主机关闭”是否是 quit() 语句的结果。

nc 192.168.240.37 65123(实际行为)

[root@netunique xinetd.d]# nc 192.168.240.37 65123
<blank>                              <-- no prompt as expected
John Smith                           <-- I enter some data and hit Enter
Enter your name: John Smith          <-- Hard to tell exactly what happened here
                                     <-- Nothing happened here, I hit Enter
                                     <-- I hit Enter again
Ncat: Broken pipe.                   <-- This is the end result

正如你所看到的,我在 netcat 中得到了非常相似的行为。


对我来说真正的问题显然是我缺乏套接字编程知识。我在网上搜索“xinetd python no data”时发现了这篇文章(https://mail.python.org/pipermail/python-list/2007-July/423659.html)这至少帮助我让我的东西工作起来,并通过示例说明了套接字编程的实际工作原理。解决方案如下,我从原始脚本中删除了 raw_input 并将其替换为帖子中的概念。

/root/script.py(原始)

#! /usr/bin/python
my_name = raw_input("Enter your name: ")
print my_name
quit()

/root/script.py (修改并工作)

#! /usr/bin/python
import sys
print "Enter your name:"                
sys.stdout.flush()
my_name = sys.stdin.readline().strip()
print "Your name is %s" % my_name
sys.stdout.flush()
quit()

telnet 192.168.240.37 65123(实际行为 - 工作)

[root@netunique ~]# telnet 192.168.240.37 65123
Trying 192.168.240.37...
Connected to 192.168.240.37.
Escape character is '^]'.
Enter your name:
Bob Smith
Your name is Bob Smith
Connection closed by foreign host.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xinetd 服务调用 python 脚本(无法正确执行) 的相关文章

  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • 如何收集列表、字典等中重复计算的结果(或制作修改每个元素的列表的副本)?

    There are a great many existing Q A on Stack Overflow on this general theme but they are all either poor quality typical
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar
  • Python:元类属性有时会覆盖类属性?

    下面代码的结果让我感到困惑 class MyClass type property def a self return 1 class MyObject object metaclass MyClass a 2 print MyObject

随机推荐

  • 在VLOOKUP中动态更改源工作簿的文件路径

    我想要一个包含文件路径的单元格 C Documents Costs Costing 2017 xls Sheet2 A D 将用于VLOOKUP在工作簿其余部分的不同工作表中发挥作用 目前 我的文件路径位于名为 Master Sheet 的
  • 获取二进制文件 C 的哈希值

    我想获取我所知道的名称的二进制文件的哈希值 我尝试过以下方法 但后来意识到SHA1 返回字符串 文件名 的哈希值 但我想在文件本身上运行它 任何关于如何做到这一点的指示都会很棒 char fileName bin ls unsigned c
  • scalaz 中的类型类和继承

    这是我第二次尝试定义问题 我无法理解它 我希望能够定义一个代数类型并在其上定义一个简单的类型类 比方说Show 在哈斯克尔我做 data Tree a EmptyTree Node a deriving Show 现在 如果我输入Empty
  • 使用 Linq 从 IEnumerable 中提取数据并将其存储在数据表中

    我有一个如下所示的数据表 public static DataTable SetColumnHeaders DataTable KeyDataTable KeyDataTable Columns Add First Name typeof
  • 在内联 html img 标签中显示带有图像标签的 SVG

    为了将 SVG 转换为 PNG 我将 svg insideHTML 内容放入 img 标签中 如下所示 img src gt SVG 图片无法正确显示 尤其是 SVG 标签内的图片 如下所示 其他 svg 标签正确显示
  • 尝试为文件 附加自动命名数据库失败。存在同名数据库

    我的项目的 App Data 文件夹中有 ASPNETDB MDF 数据库 当我尝试添加用户时出现错误 MembershipUser user Membership CreateUser viewModel Username viewMod
  • MVC2 RTM - 使用实体框架模型绑定复杂对象

    我是 MVC 新手 并且真的很挣扎于我认为这应该是一个非常常见的场景 我正在使用 MVC2 RTM 和模型对象的实体框架 我正在做的工作 包含子对象集合的父对象的编辑视图 该表单显示父对象的所有可编辑字段 并迭代并显示所有关联子对象的所有可
  • Wordpress - 无需插件即可按视图获取 5 个热门帖子

    Hi 我有自定义字段 其中包含帖子中的图像 并且我想显示按视图排序的前 5 个帖子 我正在使用 WordPress 您能帮我吗 对不起 我的英语不好 Thanks 有一个错误Xhynk的参考 它运行的查询按字母顺序返回帖子 1 2 20 2
  • Postgres - 使用 postgis 计算距离

    经过几天的寻找 并尝试了我找到的所有内容后 我来这里询问如何使用 PostGis 计算 Postgres 上两点之间的距离 我有一张名为 位置 的表 该表有一个点类型的 坐标 列 当用户在应用程序上插入值时 我需要获取按近距离排序的位置 我
  • 从对象字典创建 Django 表单

    我觉得这一定很简单 但经过几天的尝试 我正式一无所知 我有一个字典 其中键是对象 值是对象列表 以下是我想如何使用该信息来构建表单 for object in dictionary name of field object slug nam
  • 如何从 iPad 键盘上删除或禁用特定文本字段的语言首选项键

    1 需要从 iPad 键盘上删除或禁用特定文本字段的按键 如图所示 设置在故事板中 或手动 textField setKeyboardType UIKeyboardTypeASCIICapable
  • 使用 PHP 重写 URL

    我有一个如下所示的网址 url com picture php id 51 我该如何将该 URL 转换为 picture php Some text goes here 51 我认为 WordPress 也有同样的作用 如何在 PHP 中创
  • 应用程序无法在 WAMP 上运行,但可以在在线服务器上运行

    我使用在线 SQLite 数据库制作了一个基本的登录应用程序 http demo3534535 16mb com 它在在线服务器上运行良好 现在我想在 Gennymotion 模拟器中使用 WAMP 在本地服务器上运行 我必须对代码进行哪些
  • 带有 where 子句的 SQL select 语句

    如果没有硬编码值 我将如何编写这个 sql 语句 resultSet statement executeQuery select from myDatabase myTable where name john this works 而是有类
  • 为什么改变块和网格大小会对运行时间产生如此大的影响?

    我正在研究一些cudatutorial将 RGBA 图片转换为灰度图 但我不明白为什么要改变blockSize and gridSize改进了 X33 时间 global void rgba to greyscale const uchar
  • 用 C# 创建 VPN 客户端 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我一直在研究不同的 VPN 它们似乎没有很好的加密 如默认的 Windows XP VPN 服务器 我想看看是否可以使用 C 创建自己的 但我不知道如何创建一个客户端来拦截所有数
  • 如何以不同的顺序对嵌套列表中的 data.frame 对象集进行分组?

    我在嵌套列表中有一组 data frame 对象 我想按 data frame 对象的名称对它们进行分组 因为每个嵌套列表 data frame 对象都以不同的顺序放置 所以我很难将它们分组到新列表中 我尝试了 CRAN 中 purr 包的
  • TypeScript:基于布尔选项参数的返回类型缩小

    我正在尝试为我的函数创建一个类型 以便返回类型根据传递给它的值而变化 我考虑过Typescript 返回类型取决于参数接下来 几乎 这封信似乎效果很好 然而 在我的项目中 我必须使用箭头函数 另外 如果可能的话 我想避免过载 考虑这个签名和
  • 使用 HttpClient 3.1 设置响应编码

    我在用着org apache commons httpclient HttpClient并需要设置响应编码 由于某种原因 服务器在 Content Type 中返回不正确的编码 我的方法是获取原始字节的响应并转换为String与所需的编码
  • xinetd 服务调用 python 脚本(无法正确执行)

    我读到了这个 您可以使用 xinetd 添加启动 python 脚本的服务 标准输入和输出将通过网络在所需端口上传输 因此您不需要修改脚本 input raw input 和 print 方法可以正常工作 因此 当建立到 192 168 2