(xterm | gnome-terminal)からHPスイッチにtelnetで接続します。 telnetを終了します。それは端末の動作を壊します。 (telnetへのHPスイッチがない場合は、代わりにターミナルでcat
このファイル を使用できます)。
ここで、非常に長いコマンドを入力します(複数行、2行目は次の行に折り返されませんが、「現在の行にとどまります」。これにより、前のコマンドを編集したり、次の端末を使用したりできなくなります。 1行より長いもの。
_cat filewithlonglines.txt
_または_git log -p
_は、80文字より長い行の最初の80文字のみを表示することを確認してください。
reset
は機能しません。 _stty -g > stty.works
_、telnetを実行し、stty $(stty.works)
は変更されたstty
設定を復元しますが、動作はまだ壊れています。
ターミナルを閉じて、新しいターミナルを起動する必要があります。 :-(
reset
とstty
の保存/復元以外に、telnetの後で壊れた端末を修正するために何ができますか?
EDIT:次のいずれかのコマンドのようにscreen
を使用すると、次のことがわかりました。
_screen bash -c "cat hptelnet.escape ; bash"
_
または
_screen telnet hpswitch
_
その後、画面が終了しても端末は正常に動作します。したがって、回避策は、端末を台無しにするコマンドの前に画面を配置することですが、すでに台無しになっている端末を回復する方法を知りたいのです。 ..
HPスイッチによって引き起こされた問題の特定のケースでは、(端末に送信されたすべてのバイトを記録するscript
を使用して)、端末のオートラップモードがVT100コードを介してオフになっていることがわかりました。 <ESC>[?7l
"その後、再びオンになることはありません。 †
自動ラップをオンに戻すVT100コードは「<ESC>[?7h
"、このコマンドで端末に送信できます:
printf "\033[?7h"
ただし、これは、端末がVT100に準拠していることを前提としています。これは、良い賭けではありますが、確実ではありません。‡ これを行うためのより正しい方法は、terminfo設定に依存して、次のコマンドを実行することです。
tput smam
これは、VT100スタイルの端末を想定して、上記のprintf
コマンドとまったく同じ出力を生成します。 terminfo機能「smam」は「SetMode:AutomaticMargins」です。そのパートナーは「rmam」:「リセットモード:自動マージン」です。
ちなみに、ssh
に「LocalEndCommand」構成オプション(「LocalCommand」と同様)があり、すべてのHPスイッチssh接続の最後にこのアンファッカーを自動的に実行できるようにしたいと思います。
‡HPがその賭けをしたと思いますか?私は彼らがそうしたと思います、そして常にVT100コードを送ります。その場合、端末がVT100互換でない場合は、そもそもこの問題は発生しません。
reset
の他に、私がいつも試していることがいくつかあります。そして時々それはターミナルの正気を回復するのを助けます:
resize
(一部のシステムでは、$ PATHになく、通常は/ usr/X11/bin /のようなものにあります)echo "^v^o"
(押す CTRL+V
そしてその後CTRL+O
、これは古いUnixのトリックであり、バイナリファイルに対して誤ってcat
を実行した後、非常に頻繁に役立ちました。)stty sane
さらに試してみてください:
# https://Gist.github.com/raw/1294767/a1ea19be2f70b092057a5232c2d05a0ee9bf145b/hptelnet.escape
cat hptelnet.escape
tput reset
# each of the following commands may work as well
tput smcup # string to start programs using cup
tput is2 # initialization string; init_2string
# ... and as a last resort try ...
# cf. "The Alternate Character Set",
# http://www.in-ulm.de/~mascheck/various/alternate_charset/
# added \033c to clear screen
alias vtn='echo "X[mX(BX)0OX[?5lX7X[rX8Xc" | tr "XO" "\033\017"'
vtn