問題タブ [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を使用すると、仮想シリアル ポートを作成できます。たとえば、実際のシリアル デバイスからローカルまたはネットワーク経由で通信を行うことができます。

たとえば、ここでは仮想デバイスのペアを作成し、次のようにし/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 を使用してもうまくいきませんでした。

コードをステップ実行すると、これは「仮想」デバイスがレーダーに表示されない IOKit のみに依存する ORSSerialPort に起因するようです。また、パスを使用してインスタンスを初期化する場合、たとえば/dev/master、対応するインスタンスio_object_tが存在しない場合、初期化は nil を返します。

IOKit とカーネルの詳細については避けたいと思います (ここで提案されているように)。

コードを見ると、sendData はファイル記述子に書き込みます。ORSSerialPort を「プレーン」ファイル記述子で初期化し、詳細な ioctl 設定をスキップし、これをプレーン文字ストリームとして扱う方法がある可能性はありますか (これが pySerial の方法であると仮定します)。代替案はありますか?


2016 年 2 月 10 日更新:

この状況について、ORSSerialPort github issue listで作成者の armadsen と話し合いました。

基本的なアプローチは、InternalSerialPort と SerialPort の初期化子を「交換」して、パス初期化子が指定/必須のものになり、IOKit 初期化子がオプションのものになるようにすることだと思います。ファイル記述子を取得し、ポートとの間で読み取り/書き込みを行うために、パス (io_object_t ではない) が内部的に使用されていることは既に (ご指摘のとおり) です。つまり、これがそれほど複雑な変更ではないことを願っています。

以下に最終結果への回答を投稿しました...

0 投票する
2 に答える
402 参照

c++ - socat を使用してオープン QSerialPort に書き込めません

privateSerialを使用してメンバー関数を介してポートを開くことができるクラスがあります。Serial::openPort()QSerialPort serial_stream

メソッド送信:

socat 経由で仮想ポートを開きます:

次に、テスト関数で次のことを行います。

だから私が欲しかったのは、クラスでポートを開いてdata送信できることでした。b はそうで、ポートを開くことができました。しかし、送信したいときは、次の情報を取得します。pts/2pts/3QSerialPortSerialtrueQSerialPortdata

RSR232ケーブルと別のコンピューターでコードをテストしたので、問題はsocatの間違った使用に関係していると思います。

あなたの助けに感謝します。

編集: code_fodder からの最初の (いいえ) 回答の後、私は彼が私にやるように言ったことを行い、私の に for ループを追加しましたinitTestCase():

私がコメントしたように、利用可能なポートの数は 0 です (これは正しい方法ではないことが予想されます)。しかし、なぜSerial::instance().openPort("pts/3");true を返すのでしょうか?

今言ったように、それは socat と関係があるに違いありません...

0 投票する
1 に答える
502 参照

ansible - クラスターから HAproxy 無効サーバーを無効にしているときに、そのようなサーバーが見つかりませんでした

私のhaproxy.cfg

HAproxy クラスターからノードを無効にするために socat を使用しています。以下はコマンドです

上記は私のノードをhaproxyから無効にします。しかし、「cd-test-1」の代わりに IP アドレス (1.2.3.4) を使用すると、No such server が返されます。

これを自動化するためにansibleを使用しています。{{inventory_hostname}} を使用して、コマンドを HAproxy サーバーに委任します。したがって、問題。

これにより、「そのようなサーバーはありません」が返されます。そして一緒に移動します。

サーバー名の代わりに IP を使用する際の問題を誰かが見つけてくれますか。非常にばかげたことをしているかもしれません。どんな助けでも大歓迎です。

0 投票する
1 に答える
3548 参照

linux - INTERFACE オプションを使用した SOCAT 上の PPPd

私の目的は、socat で pppd を使用することです。eth0 が (物理的に) 相互に接続された 2 つの Ubuntu ボックスがあります。両方の IP アドレスに ping を実行できます。各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 インターフェースが短時間作成されるのを確認しましたが、両方の IP アドレス (10.10.10.10 または 20.20.20.20) に対して ping を実行できません。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 インターフェイスがアップし、両方の IP アドレス (10.10.10.10 と 20.20.20.20) に ping を実行できます。

動作している eth0 インターフェイスがあるのに、なぜ疑似シリアル デバイスを使用する必要があるのか​​は別の問題であり、それについては説明しません。

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ですか?