これがここに属するのか、StackOverflow、SuperUserなのかはわかりません。
リバースTelnetサーバーを実行しているデバイスがあり、そのデバイスにデータを送受信できる必要があります。このようにsocatを実行し、telnetを介してポート8002に接続すると使用できます。
sudo socat TCP-LISTEN:8001 TCP-LISTEN:8002
ただし、送信してはいけない情報を送信するため、sedを使用してデータをフィルタリングしたいと思います。私はこの通信を双方向に維持したいと思います。つまり、localhost:8002でTelnetに入力した内容はすべてlocalhost:8001に送信され、その逆も同様です。
以下を含むbashスクリプトを試してみました。
#!/bin/bash
sed (my regex here) | socat - TCP-LISTEN:8002
次に、次を実行します。
sudo socat TCP-LISTEN:8001 SYSTEM:./replace.sh
しかし、これはTelnetコンソールに何も出力しません。私もEXEC:
同じことを試しましたが、何も起こりませんでした。
私も試しました:
sudo socat TCP-LISTEN:8001 "SYSTEM:'sed (my regex here)' || TCP-LISTEN:8002"
効果はありません。
答え1
あなたはポイントを見逃していますfork
。コマンドラインは次のとおりです。
socat TCP-LISTEN:8002,fork SYSTEM:/path/to/replace.sh
/path/to/replace.shファイルには実行権限があり、次の内容を含めることができます(これにより、すべての「a」が「b」に変わります)。
#!/bin/bash
sed -u 's/a/b/g'
sed を使用する場合は、バッファ-u
リングされていないフラグを追加することが重要です。