当前位置: 首页 > news >正文

使用linux 指令实现网络助手的功能

网络助手发送 16进制字符串, 接收ASCII 返回
对应的py 代码:


import socket
s = socket.socket()
s.connect(("192.168.5.150", 18204))
s.send(bytes.fromhex("0231303031353030303003"))
print(s.recv(1024).decode("ascii"))
s.close()

解决无返回值数据的问题

您提到方法1和方法2没有显示返回值数据,而原始命令有返回值,这通常是因为连接保持时间的问题。以下是几种解决方案:

方案1:添加等待时间(推荐)

echo "0231303031353030303003" | xxd -r -p | nc -w 3 192.168.5.150 18204 | hexdump -C

关键点:

  • -w 3 设置超时时间为3秒,等待服务器响应
  • 适用于大多数情况,是最简单的解决方案

方案2:使用socat替代nc(更可靠)

echo "0231303031353030303003" | xxd -r -p | socat -t 3 - TCP:192.168.5.150:18204 | hexdump -C

优点:

  • socatnc 更稳定可靠
  • -t 3 设置超时时间

方案3:保持连接打开(交互式)

(echo "0231303031353030303003" | xxd -r -p; sleep 3) | nc 192.168.5.150 18204 | hexdump -C

原理:

  • 使用子shell发送数据后等待3秒
  • 保持连接开放以接收响应

方案4:使用expect脚本(复杂场景)

#!/usr/bin/expect -f
spawn nc 192.168.5.150 18204
send "\x02\x31\x30\x30\x31\x35\x30\x30\x30\x30\x03"
expect -re ".+" 
puts [hexdump [expect_out(buffer)]]

验证方法

要确认服务器确实有返回数据,可以先使用原始命令:

echo -n -e "\x02\x31\x30\x30\x31\x35\x30\x30\x30\x30\x03" | nc -v 192.168.5.150 18204 | hexdump -C

添加 -v 参数可以看到连接详细信息,帮助诊断问题。

选择哪种方案取决于您的具体环境和需求,方案1通常是最简单有效的解决方案。

相关文章:

  • Git与SVN的区别以及各自的优势
  • Debian编译安装mysql8.0.41源码包 笔记250401
  • 在 Ubuntu 下通过 Docker 部署 WordPress 服务器
  • Unity中的UI坐标和点击接口
  • git中用于生成commitId与其父commitId间的文件差异文件树
  • 部分国产服务器CPU及内存性能测试情况
  • 【Git “push“ 命令详解】
  • Git Flow 分支管理详解
  • Linux 中dmesg, kern.log, syslog 什么关系?有什么用?
  • 汽车加气站操作工考试答题模板
  • linux xargs命令学习
  • Flink TaskManager之间数据传输(NetworkManager)
  • MySQL进阶 面试速记
  • 基于 docker 的 LLaMA-Factory 全流程部署指南
  • 开发体育直播即时比分系统:赛事收藏功能的技术实现方案
  • vscode集成deepseek实现辅助编程(银河麒麟系统)【详细自用版】
  • Android学习总结之Kotlin 协程
  • presto行转列
  • Vulnhub-zico2靶机打靶记录
  • ML 聚类算法 dbscan|| OPTICS|mean-shift
  • 山西太原一小区发生爆炸,太原:进一步深刻汲取教训
  • 礼来一季度净利增近三成,明星GLP-1药物替尔泊肽贡献近半收入
  • 戴上XR头盔,五一假期在上海也能体验“登陆月球”
  • 央行4月开展12000亿元买断式逆回购操作
  • 新希望一季度归母净利润4.45亿,上年同期为-19.34亿
  • 日本希望再次租借大熊猫,外交部:双方就相关合作保持密切沟通