问题标签 [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.
socat - socat - 日志文件到 tcp 绑定的问题
我对在特殊情况下使用 socat 有疑问。我在系统上有一个日志文件,例如 /var/log/logfile.log,我想将日志文件绑定到 tcp (telnet) 连接。
因此,当我启动对系统的 telnet 时,我会在日志文件中看到新条目。
我试试这个:
这行得通,但即使新条目将写入日志文件,我还是再次通过 telnet 获得了整个日志文件。
我只需要新行,而不是整个日志文件。
有任何想法吗?
macos - ORSSerialPort 中的虚拟串口
我正在使用ORSSerialPort重写一个 OSX 控件应用程序。在某些情况下,我想控制一个没有直接连接到我的机器的串口设备,或者在本地模拟该设备的通信以进行测试。使用socat one 可以创建虚拟串行端口,例如在本地或通过网络从真实串行设备进行通信。
例如,在这里我创建了一对虚拟设备/dev/master
和/dev/slave
:
sudo 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)在内部用于获取文件描述符并从端口读/写。换句话说,我希望这不是一个非常复杂的变化。
我在下面发布了对最终结果的答案...
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=mypty
QEMU 打开一个 PTY,但是当我尝试从主机读取或写入时,权限被拒绝。
在任何一种情况下,我都无法在我的客人中找到端口。/dev/pts 是空的,在 /dev 中只有 tty 和 ttyAMA3。所以,我的问题是建立一般的通信,我特别好奇我的客人的端口在哪里。
c++ - 无法使用 socat 写入打开 QSerialPort
我有一个类,我可以在其中通过具有 privateSerial
的成员函数打开一个端口:Serial::openPort()
QSerialPort serial_stream
和方法发送:
我通过 socat 打开一个虚拟端口:
然后在测试功能中我执行以下操作:
所以我想要的是我可以通过在课堂上打开端口发送data
到。b是这样才能够打开端口。但是当我想发送时,我得到以下信息:pts/2
pts/3
QSerialPort
Serial
true
QSerialPort
data
我认为这个问题一定与使用 socat 错误有关,因为我们已经用 RSR232 电缆和另一台计算机测试了代码。
将感谢您的帮助。
编辑:在 code_fodder 的第一个(否)回答之后,我做了他告诉我要做的事情,并在我的中添加了一个 for 循环initTestCase()
:
就像我评论的那样,可用端口的数量为 0(预计这不是正确的方法)。但为什么Serial::instance().openPort("pts/3");
返回 true ?
就像我刚才说的,它一定和socat有关......
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而不是服务器名称的问题。可能会做一些非常愚蠢的事情。任何帮助表示赞赏。
linux - PPPd over SOCAT 使用 INTERFACE 选项
我的目标是在 socat 上使用 pppd。我有两个带有 eth0 的 Ubuntu 盒子(物理上)相互连接。我可以 ping 两个 IP 地址。我在每个 Ubuntu 机器上执行以下操作。
- 创建一个伪串行设备并将其链接到我的网络接口“eth0”。
socat PTY,link=/dev/ttyp10 接口:eth0 - 在这个伪串行设备上使用 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 接口时,为什么我需要使用伪串行设备是一个不同的问题,我们不讨论这个问题。
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?
netcat - 如何使用 socat、ncat 将流数据记录到文件中
我正在学习socat和ncat。我想将流数据记录到文件中。使用 ncat,我可以执行以下操作:
ncat <一些参数> --output save_file.txt
第一个问题是我怎样才能用 socat 做同样的事情?
其次,我只想保存一个方向的数据,而不是两者,但仍然希望流是双向的。我怎样才能做到这一点?
非常感谢。
proxy - 使用 socat 命令将 IP 地址与主机绑定
我的服务器中安装了squid代理,我想将 IP 地址与我想连接到它们的主机绑定。
我怎样才能用 socat 命令做到这一点?
例子 :
我怎样才能2.2.2.2:2222
像我的地址 IP 一样连接连接1.1.1.1:1111
?
linux - 将进程 stdin 和 stdout 重定向到 netcat
我有一个带有简单交互式命令行界面的嵌入式 linux 应用程序。
我想从 telnet(或一般网络)访问命令行。
但是,该过程应该在电路板打开时开始,并且是在一个独特的实例中。因此,以下netcat
命令不是一个选项:
我可以
将远程命令发送到 myapp,但是这样我看不到myapp
输出。
有没有办法将stdin 和 stdout都netcat
重定向到?
谢谢。