2016-08-06 10 views
1

私はbashの履歴コマンドのルックアップの利点を持っていますが、私はsshを複数のホストに取り組んでいます。しかし、私はセキュリティポリシーのためにほとんどのリモコンにホームディレクトリを持っていません。そこに〜/ .bash_historyはありません。 "export HISTFILE =/tmp/blah"は現在のセッションでは機能しません。たとえそこにファイルがあったとしても、いくつかのローカルファイルを通して複数のリモートにsync'edする必要があります。リモートホストのbashの履歴

ソリューションは、おそらく次のようになります。

.ssh/configまたはaliasもしくは何とかを通じて、すべてのsshコマンドの周りに何かを実行します。例えば

scp .remote-history [email protected]:/tmp/history 
ssh [email protected] 
scp [email protected]:/tmp/history .remote-history.add 
cat .remote-history.add >> .remote-history 

同様のことを行う既存のツールがない限り、

+0

プログラミングに関する質問がありますか?あるいは、あなたはどんなツールを使うべきかアドバイスをしていますか? – ghoti

+0

私は妥当な時間に、そのようなツールやツールの組み合わせをGoogleにすることができませんでした。私はプログラム的な解決策が必要だと思っています。これについて十分な質問がないと思ったら教えてください。 – ilj

+0

ホームディレクトリをお持ちでない場合、ヒストリーファイルはどのように役立つでしょうか?あなたは[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のようです。どのような実際のタスク(あなたと思う)は、この機能が必要ですか? – tripleee

答えて

1

あなたはシェル関数で、あなたの提案のようなものを包むことができる必要があります:

ssh() { 
    scp .remote-history [email protected]:/tmp/history 
    command ssh [email protected] 'HISTFILE=/tmp/history -bash' 
    command ssh [email protected] cat /tmp/history > .remote-history 
} 

いくつかの注意事項:

  1. あなたが機能sshに名前を付ける必要はありませんが、もしそうなら、あなたそうしないと、2番目のコマンドと3番目のコマンドの前に接頭辞commandを置くことができます。
  2. -bashは、ログインシェルを起動するための単なる方法です。
  3. ローカルファイルは、リモートファイルがそのコピーとして開始されるため、おそらくローカルのファイルを上書きする必要があります。
+0

'$ ssh user @ host -i access.key 'HISTFILE =/tmp/history -bash'は' bash:-bash:command not found'を生成します。 – ilj

+0

ダッシュを取り出します。 – tripleee

+1

'bash -l'を使用します。私はいくつかの慣習が混ざっていた。 – chepner