netcatから前のコマンドを取得するには、上矢印を使用します。

netcatから前のコマンドを取得するには、上矢印を使用します。

私は最近、サーバーをテストするために多くのnetcatを使用していますが、上矢印を使用して前のコマンドを繰り返すことは非常に役立ちます。しかし今はちょうど^[[A。この動作を変更する方法はありますか?

答え1

2つの可能性があります。最初は使用することです。巻き戻すワンパッキング読書船プログラムを取り巻く歴史図書館netcat。もう一つは使用することです。ソカットオプションとしてreadlineが組み込まれています。

たとえば、Telnetにnetcatを使用している場合は、次のように言うことができます。

rlwrap nc -t remotehost 23

入力した各行はファイルに保存され、~/.nc_history通常の読み取り行キーを使用して移動できます。同じコマンドを再実行すると、既存の履歴が保存されます。

を使用する場合はsocatTelnet オプションはありませんが、他の接続タイプの場合は次のことができます。

socat readline,history=$HOME/.socat.hist TCP4:remotehost:port

そうでない場合は、rlwrapsocatを使用してnetcatを実行できます。

socat readline,history=$HOME/.socat.hist exec:'nc -t remotehost 23'

これらのプログラムはありませんが、bashreadlineを含むシェルがある場合、3番目の可能性は、ターミナルからbash読み取りコマンドを使用してnetcatの標準入力に送信することです。以下は、同じncコマンドを使用して履歴をファイルに保存および復元する非常に簡単なスクリプトの例です/tmp/myhistory

#!/bin/bash
# emulate rlwrap nc -t localhost 23
HISTFILE=/tmp/myhistory
history -r              # read old history
while IFS= read -p 'netcat> ' -e    # sets REPLY, -e enables readline
do  history -s "$REPLY" # add to history
    history -w          # save to file
    echo "$REPLY"       # write to netcat
done |
nc -t remotehost 23

関連情報