bash - 收到数据后如何关闭netcat连接?
问题描述
一个非常简单的用法netcat
如下:
#!/bin/sh
echo "hello world" > original.txt
base64 original.txt > encoded.txt
cat encoded.txt | nc -l -p 1234 -q 0
#!/bin/sh
nc localhost 1234 -q 0 > received.txt
base64 -d received.txt > decoded.txt
rm received.txt encoded.txt
echo "Sent:"
md5sum original.txt
echo "Received:"
md5sum decoded.txt
rm decoded.txt original.txt
这将创建一个文件,将其编码为 base64,将其发送过来netcat
,然后对其进行解码,最后使用校验和比较来比较发送的内容和接收的内容是否相同。
在我之前使用的 Kali Linux 机器netcat
上,执行第二个脚本时连接关闭,但在家里尝试 Ubuntu,情况并非如此。我需要手动关闭连接Ctrl+D
。
如何在收到此数据后关闭连接?
解决方案
我认为包括-c
标志nc
应该这样做。另外,您确定要使用 Bourne shell,而不是 Bash?我建议将您的 shebang 更改为#!/bin/bash
推荐阅读
- rust - 如何避免在不同的匹配臂中借用 Vec 两次作为可变参数?
- excel - 添加另一个 For 循环,以便在保存文件之前添加另一个工作表数据
- c# - Automapper 子属性映射
- scala - 使用 Spray Json 解析超过 22 个字段,无需嵌套案例类
- javascript - 另一个 Google Firebase 错误“函数返回未定义、预期的承诺或值”
- python - 如何在python的文本文件中以垂直顺序一个接一个地打印列表
- php - 在PHP中删除foreach中逗号的最后一部分?
- java - Do/While 循环卡住
- amazon-web-services - IAM - AWS 中角色身份的用途
- python - 将字符串转换为位数组