SSH接続デバッグ、SSHログイン後に端末のランダムコンテンツに誤った文字を印刷する

SSH接続デバッグ、SSHログイン後に端末のランダムコンテンツに誤った文字を印刷する

sshがリモート端末(「agetty」)にログインするとランダムに発生し、無関係な文字をsshセッション端末にただちに出力します。
定期的に繰り返すと、「hh��cahh�」または「hh��!ca[」および「CR」「LF」になります。

また、特定の文字($」として認識される)は、その文字の後ろ(および含む)に端末に出力されないため、コピーして貼り付けることはできません。

この Debian ディストリビューションの問題が認識されてから、システム構成ファイルに変更は適用されませんでした。いくつかの不規則な出力問題は、次の方法で解決することができます。 (微細な耐久性のため)

stty sane

このエンコード (?) 問題の原因をどのようにデバッグでき、プロセスの説明や pid(strace -fe write $(lsof -t "/proc/$$/fd/1" | sed 's/^/-p/'ps | grep $pid->この出力をstdoutで終了させる別のプロセス/プログラムはありますか?

ベストアンサー1

ホストとクライアント間の時間ベースを同期させ、時間の経過とともに出力を観察することによって、定義された期間中に繰り返されるtty出力パターンは、cronサービスを指す可能性が高いです。

次に、そのバイナリの出力(stdout、stderr)を次にリダイレクトします。/dev/空対照的に、ローカルログファイルではttyとのエンコーディング干渉が消えます(service cron reload、使用service cron restart)。
ターミナルセッションのエンコーディングが利用できなくなった理由(入力インタラクションを使用)の説明はまだありませんが、次の変更でエンコーディングの問題が解決されました。

cron設定ファイル(tty内のエンコーディングの問題):
*29 * * * * /path_to_executable/binary > /shared_memory_tmpfs/log.file

  1. printf(「標準出力への出力の記録」);
  2. このバイナリの複数のインスタンスの場合は、log.fileを削除します。

cron設定ファイル(問題解決):
*29 * * * * /path_to_executable/binary > /dev/null 2>&1

  1. fprintf("log.fileへの出力の履歴");
  2. この乗算されたバイナリインスタンスがコンテンツをログに記録する前に、log.fileを削除して再度開きます。

このtty出力のソースを識別するのは難しいです。なぜなら、リダイレクトされた出力は、再起動されたすべてのプロセスのすべての再帰から消去され、起動時に短い時間でいくつかの文字が他のすべての後続のtty出力を混乱させる可能性があるためです(特に、次の形式は行の前とカーソルです)。と無関係)。
原因が特定された場合、問題を解決することは難しくありません。それにもかかわらず、その理由の説明は興味深いでしょう。

おすすめ記事