2016-07-22 6 views
2

このトピックに関する多くの質問に続きます。ファブリックでゲートウェイを使用するときにpemファイルパスを指定する方法

私のシナリオ:

ローカルホスト - >ゲートウェイ - >リモートホスト

私は、ゲートウェイホストを指定するenv.gateway変数を使用しています。

サンプルコード

env.user = "ec2-user" 

env.key_filename = ["/home/ec2-user/.ssh/internal.pem","/home/roshan.r/test.pem","/home/ec2-user/.ssh/test2.pem"] 

env.hosts = ['x.x.x.244', 'x.x.x.132']  
env.gateway = 'x.x.x.189' 

def getdate(): 
    content = run('date') 

私の問題は、PEMキーパスです。

/home/roshan.r/test.pemは現在のディレクトリにあります。ゲートウェイサーバーへのログインに使用されます。

上記の2つのpemファイルは、ゲートウェイサーバーにあります。

このプログラムを実行すると、ファイルが見つかりませんでした。エラーです。

ありがとうございました!

答えて

0

私はこれをまだしていませんでしたが、それらのファイルを処理する機能はどうですか?次のようなもの:

@'x.x.x.189' 
def get_pem(): 
    env.key_filename.append(get("/home/ec2-user/.ssh/internal.pem") 
    env.key_filename.append(get("/home/ec2-user/.ssh/test2.pem") 

また、私は何かを試すことができますか?ファブリックはあなたのコンピュータ上で/home/ec2-user/.ssh/internal.pemを探しているので見つかりませんでした。リモートホスト上にあることを知る方法はありません。試してみるとどうなりますか: x.x.x.189:/home/ec2-user/.ssh/internal.pem

0

私はちょうど.pemファイルのパスを変更して動作します。以下の提案を参照してください:

ローカルマシンにゲートウェイとアプリケーションサーバーの.pemファイルを保存して実行してください。私のコードを見てください。

from fabric.api import * 

env.user = "ubuntu" 

env.key_filename = ["~/folder/sub_folder/gate_way_instance.pem", "~/folder/sub_folder/test_server_ssh-key.pem"] 

env.hosts = ['XX.XX.XX.XXX'] 
env.gateway = 'XX.XX.XX.XXX' 


def uptime(): 
    content = run('cat /proc/uptime') 
    print content 
    content = run('ls -la') 
    print content 
関連する問題