
現在、私は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