すべてのSSHセッションのティー出力(デフォルト)

すべてのSSHセッションのティー出力(デフォルト)

現在、私はPuTTYがWindowsでやっているのと同じようなことをしようとしています。 SSHセッション情報をキャプチャしたいです。時間に基づいてログファイルでstdoutを表示し、ホストに基づいてログを区別できるようにしたいです。今teeはうまくいきますが、常に日付とディレクトリでteeを入力する必要があることに注意してください。あまり実用的ではありません。私が要求したことを行う方法を知っている人はいますか? SSH設定にローカルコマンドオプションを追加することを検討しましたが、想像できるように、SSHセッションの開始後にコマンドを実行するように見えるため、出力をキャプチャするために使用することはできません.

ベストアンサー1

ssh コマンドの代わりにラッパーを作成できます。次のようになります。

tssh() { ssh "$@" | tee "$(date +%m_%Y_%H:%M:%S)"; }

tsshこれで、通常で使用されているすべてのオプションを使用できますssh。 SSHセッションはファイル( 08_2019_16:43:50書式man date指定子の説明など)に書き込まれます。+

しかし、出力ログファイルの名前にホスト名を含めるのは難しいです。このようなラッパーを使用できますが、常にホストを最初の引数として渡す必要があることに注意してください。

tssh()
{
    if [ ! "$#" -eq 1 ]
    then
    printf "Error: Host missing\n" >&2
    return 0
    fi

    ssh "$@" | tee "$1_$(date +%m_%Y_%H:%M:%S)"
}

たとえば、

   $ tssh localhost -vv
   $ logout

出力ログファイルの名前にはホスト名が含まれます。例:

   localhost_08_2019_16:47:41

おすすめ記事