问题标签 [socat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
557 浏览

socat - socat - 日志文件到 tcp 绑定的问题

我对在特殊情况下使用 socat 有疑问。我在系统上有一个日志文件,例如 /var/log/logfile.log,我想将日志文件绑定到 tcp (telnet) 连接。

因此,当我启动对系统的 telnet 时,我会在日志文件中看到新条目。

我试试这个:

这行得通,但即使新条目将写入日志文件,我还是再次通过 telnet 获得了整个日志文件。

我只需要新行,而不是整个日志文件。

有任何想法吗?

0 投票
1 回答
800 浏览

macos - ORSSerialPort 中的虚拟串口

我正在使用ORSSerialPort重写一个 OSX 控件应用程序。在某些情况下,我想控制一个没有直接连接到我的机器的串口设备,或者在本地模拟该设备的通信以进行测试。使用socat one 可以创建虚拟串行端口,例如在本地或通过网络从真实串行设备进行通信。

例如,在这里我创建了一对虚拟设备/dev/master/dev/slavesudo socat -d -d -d -d -lf /tmp/socat pty,link=/dev/master,ixoff=0,ixon=0,ispeed=9600,ospeed=9600,echo=0,crtscts=0,user=gerwin,group=staff pty,link=/dev/slave,rawer,echo=0,user=gerwin,group=staff

使用这样的设置,我可以使用 pySerial 连接到虚拟端口。但是,使用 ORSSerialPort 对我不起作用。

单步执行代码时,这似乎源于 ORSSerialPort 仅依赖于 IOKit,其中“虚拟”设备不会出现在其雷达上。同样,当使用路径初始化实例时,例如/dev/master,对应的io_object_t不存在 - 并且初始化返回 nil。

我想避免深入研究 IOKit 和内核的东西(如此处所建议的)。

查看我看到的代码,sendData 写入文件描述符。是否有一种方法可以用“普通”文件描述符初始化 ORSSerialPort,跳过详细的 ioctl 设置,并将其视为普通字符流(假设这是 pySerial 将其拉下来的方式)。有什么选择吗?


2016 年 2 月 10 日更新:

我在ORSSerialPort github 问题列表中与创建者 armadsen 讨论了这种情况:

我认为基本方法是“交换” InternalSerialPort 和 SerialPort 中的初始化程序,以便路径初始化程序是指定/必需的,而 IOKit 初始化程序是可选的。已经是这种情况(正如您所指出的),路径(而不是 io_object_t)在内部用于获取文件描述符并从端口读/写。换句话说,我希望这不是一个非常复杂的变化。

我在下面发布了对最终结果的答案...

0 投票
1 回答
4034 浏览

serial-port - QEMU 主机和来宾之间的串行通信

我正在尝试在我的 QEMU 主机(Debian Jessie x86_64)和来宾(也是 Debian Jessie,但在 ARM 上)之间设置一对串行端口。除了串口部分之外的所有东西都可以工作。

我对 QEMU 真的很陌生,所以可能有更好的方法,但是我在运行 QEMU 时测试了以下标志:

-chardev tty,id=mytty,path=/dev/pts/2(/dev/pts/2 & 3 与 socat 一起使用)

-chardev pty,id=myptyQEMU 打开一个 PTY,但是当我尝试从主机读取或写入时,权限被拒绝。

在任何一种情况下,我都无法在我的客人中找到端口。/dev/pts 是空的,在 /dev 中只有 tty 和 ttyAMA3。所以,我的问题是建立一般的通信,我特别好奇我的客人的端口在哪里。

0 投票
2 回答
402 浏览

c++ - 无法使用 socat 写入打开 QSerialPort

我有一个类,我可以在其中通过具有 privateSerial的成员函数打开一个端口:Serial::openPort()QSerialPort serial_stream

和方法发送:

我通过 socat 打开一个虚拟端口

然后在测试功能中我执行以下操作:

所以我想要的是我可以通过在课堂上打开端口发送data到。b是这样才能够打开端口。但是当我想发送时,我得到以下信息:pts/2pts/3QSerialPortSerialtrueQSerialPortdata

我认为这个问题一定与使用 socat 错误有关,因为我们已经用 RSR232 电缆和另一台计算机测试了代码。

将感谢您的帮助。

编辑:在 code_fodder 的第一个(否)回答之后,我做了他告诉我要做的事情,并在我的中添加了一个 for 循环initTestCase()

就像我评论的那样,可用端口的数量为 0(预计这不是正确的方法)。但为什么Serial::instance().openPort("pts/3");返回 true ?

就像我刚才说的,它一定和socat有关......

0 投票
1 回答
502 浏览

ansible - 禁用 HAproxy 时未找到此类服务器 disable server from cluster

我的 haproxy.cfg

我一直在使用 socat 从 HAproxy 集群中禁用一个节点。下面是命令

以上从 haproxy 禁用我的节点。但是如果我使用 IP 地址(1.2.3.4)而不是“cd-test-1”,它会返回No such server。

我正在使用 ansible 来自动化它。我使用 {{inventory_hostname}} 并将命令委托给我的 HAproxy 服务器。因此问题。

这将返回“没有这样的服务器”。并移动。

有人可以帮我找到使用IP而不是服务器名称的问题。可能会做一些非常愚蠢的事情。任何帮助表示赞赏。

0 投票
1 回答
3548 浏览

linux - PPPd over SOCAT 使用 INTERFACE 选项

我的目标是在 socat 上使用 pppd。我有两个带有 eth0 的 Ubuntu 盒子(物理上)相互连接。我可以 ping 两个 IP 地址。我在每个 Ubuntu 机器上执行以下操作。

  1. 创建一个伪串行设备并将其链接到我的网络接口“eth0”。
    socat PTY,link=/dev/ttyp10 接口:eth0
  2. 在这个伪串行设备上使用 pppd。
    设备 A:
    pppd noauth /dev/ttyp10 10.10.10.10:20.20.20.20
    设备 B:
    pppd noauth /dev/ttyp10 20.20.20.20:10.10.10.10

我看到我的 ppp0 接口在短时间内创建,但我无法 ping 两个 IP 地址(10.10.10.10 或 20.20.20.20)。我知道我的解决方案不完整,因为我需要指定我的 pppd 数据包必须如何从我的 eth0 接口路由但不知道该怎么做(我在 eth0 接口上使用了 tcpdump 并找到了一些数据)。

我通过将 socat 绑定到 TCP 服务器/客户端尝试了相同的实验,它成功了。

设备 A:
1. socat pty,link=/dev/ttyp10,raw,echo=0 TCP4-LISTEN:7001,reuseaddr &
2. pppd noauth /dev/ttyp10 10.10.10.10:20.20.20.20

设备 B:
1. socat pty,link=/dev/ttyp10,raw,echo=0,waitslave TCP4:20.1.1.2:7001 &
2. pppd noauth /dev/ttyp10 20.20.20.20:10.10.10.10

注意:20.1.1.2是设备 A 的“eth0”IP 地址。有了这个,我的 ppp0 接口已启动,我可以 ping 两个 IP 地址(10.10.10.10 和 20.20.20.20)。

当我有一个工作的 eth0 接口时,为什么我需要使用伪串行设备是一个不同的问题,我们不讨论这个问题。

0 投票
3 回答
272 浏览

bash - What does <<< mean in bash (ie. in socat ... <<<"string" >output-filename)

I am trying to understand a codebase where I see a line like below: socat /tmp/haproxy - <<< "show servers state" > /var/state/haproxy/global

What is socat doing here? What does <<< mean?

0 投票
0 回答
348 浏览

netcat - 如何使用 socat、ncat 将流数据记录到文件中

我正在学习socat和ncat。我想将流数据记录到文件中。使用 ncat,我可以执行以下操作:

ncat <一些参数> --output save_file.txt

第一个问题是我怎样才能用 socat 做同样的事情?

其次,我只想保存一个方向的数据,而不是两者,但仍然希望流是双向的。我怎样才能做到这一点?

非常感谢。

0 投票
0 回答
146 浏览

proxy - 使用 socat 命令将 IP 地址与主机绑定

我的服务器中安装了squid代理,我想将 IP 地址与我想连接到它们的主机绑定。

我怎样才能用 socat 命令做到这一点?

例子 :

我怎样才能2.2.2.2:2222像我的地址 IP 一样连接连接1.1.1.1:1111

0 投票
3 回答
19085 浏览

linux - 将进程 stdin 和 stdout 重定向到 netcat

我有一个带有简单交互式命令行界面的嵌入式 linux 应用程序。

我想从 telnet(或一般网络)访问命令行。

但是,该过程应该在电路板打开时开始,并且是在一个独特的实例中。因此,以下netcat命令不是一个选项:

我可以

将远程命令发送到 myapp,但是这样我看不到myapp输出。

有没有办法将stdin 和 stdoutnetcat重定向到?

谢谢。