私は最近、サーバーをテストするために多くのnetcatを使用していますが、上矢印を使用して前のコマンドを繰り返すことは非常に役立ちます。しかし今はちょうど^[[A
。この動作を変更する方法はありますか?
答え1
2つの可能性があります。最初は使用することです。巻き戻すワンパッキング読書船プログラムを取り巻く歴史図書館netcat
。もう一つは使用することです。ソカットオプションとしてreadlineが組み込まれています。
たとえば、Telnetにnetcatを使用している場合は、次のように言うことができます。
rlwrap nc -t remotehost 23
入力した各行はファイルに保存され、~/.nc_history
通常の読み取り行キーを使用して移動できます。同じコマンドを再実行すると、既存の履歴が保存されます。
を使用する場合はsocat
Telnet オプションはありませんが、他の接続タイプの場合は次のことができます。
socat readline,history=$HOME/.socat.hist TCP4:remotehost:port
そうでない場合は、rlwrap
socatを使用してnetcatを実行できます。
socat readline,history=$HOME/.socat.hist exec:'nc -t remotehost 23'
これらのプログラムはありませんが、bash
readlineを含むシェルがある場合、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