2017-06-28 4 views
1

私はこれを1日に複数回行います。それを自動化するための手掛かりがあるので、私は1つのコマンドを実行してログに到達することができますか? sshが2つあり、docker execがあります。SSHの2つのレイヤーとドッカーのexecを自動化するにはどうすればよいですか?

➜ ~ ssh host Last login: Tue Jun 27 15:44:11 2017 from 10.82.34.63 $ ssh another-host Last login: Tue Jun 27 15:44:18 2017 from host $ docker exec -it app-container bash [[email protected] opt]# tail -f tomcat/logs/catalina.out

+0

は常に同じ最初のホストですか? –

+0

はい、いつも 'host'です。 – bgoosman

+0

Stack Overflowは、プログラミングおよび開発に関する質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく[スーパーユーザ](http://スーパーユーザ。com /)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)がもっと良い場所になるでしょう。 – jww

答えて

1

これは、少なくともsshのための部分的な答えです。 ssh用法出力を見てください:

ssh (.... lots of options ....) [[email protected]]hostname [command] 

ので、オプションのcommandが必要hostname後、引数リストの最後にあります。あなたが期待するように、これは確かに動作しますが、あなたは「チェーン」リモート実行されますここでは別のsshコマンドができます。

ssh host ssh another-host 

行います。それはインタラクティブセッションを持つことができますしないように、あなたのsshが、この場合にはttyを割り当てません

注意。しかし、もちろん、あなたが最後の部分についてだけでなく

ssh host ssh another-host docker exec [...] 

を実行するには、このssh何かを与えることができ、私はちょうどドッキングウィンドウのドキュメントを見上げました。 -tオプションにはttyが必要なので、省略してください。もちろん、

ssh host ssh another-host docker exec -i app-container tail -f tomcat/logs/catalina.out 

、完全自動化のためのSSH keysを使用して、キーで実行されているSSH agentを持っている:そして、あなたはそれが何インタラクティブません限り、あなたの容器の中に何が好きで実行することができるはずです追加されました。

+0

助けてくれてありがとう!私は 'sshホストsshの別のホストドッカーのexec -it app-container tail -f tomcat/logs/catalina.out'を試しましたが、' tty以外の入力に対してttyモードを有効にすることはできません.'や 'pwd'を実行することもできません。尾の終わりに – bgoosman

+0

'ssh host ssh another-host'はうまく動作しますが – bgoosman

+0

@bgoosman私のアップデート –

2

我々は(他の人にSSHへのプロキシホストを経由してジャンプする)最初の部分のためのOpenSSHにProxyCommandを利用することができます。あなたはを通してプロキシされているすべてのホストは、ワイルドカードでそれらの束をキャッチすることができ、同じドメインにあることが起こった場合

Host another-host 
    ProxyCommand ssh -W %h:%p host 
    HostName another-host 

:あなたの~/.ssh/configは次のようになります。たとえば

Host jumphost 
    Hostname host.mydomain 

Host *.mydomain 
    ProxyCommand ssh -W %h:%p jumphost 

2番目の部分では、コマンドを使用する前に、シェルでコンテナにexecを入れる必要はありません。 docker exec -it app-container tail -f tomcat/logs/catalina.outは完全に有効です。 SSHの設定と組み合わせること

、あなたは擬似TTY(-t)を割り当てることができ、その後、ただ一つのコマンドを実行します。

ssh -t another-host docker exec -it app-container tail -f tomcat/logs/catalina.out 
+0

いくつかの素晴らしいssh機能を表示するための+1(ttyを有効にするオプションを含む)。 OPはシンプルな 'tail'のためにこれを必要としませんが、おそらく後で他のもののために:) –

関連する問題