如何在Fabric中使用网关时指定pem文件路径

时间:2016-07-22 18:25:43

标签: python amazon-web-services fabric

我跟随了很多与此主题相关的问题。

我的情景:

  

本地主机 - >网关 - >远程主机

我使用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 key path。

/home/roshan.r/test.pem位于当前目录中。用于登录网关服务器。

其他两个提到的pem文件位于网关服务器中。

当我运行此程序时,我发现找不到文件错误。

感谢您的帮助!!

2 个答案:

答案 0 :(得分:0)

我还没有做到这一点,但是有一个功能可以完成那些pem文件呢?类似的东西:

@'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")

另外,我可以尝试一下吗?我猜你有一个未找到的领域因为Fabric正在你的计算机上寻找/home/ec2-user/.ssh/internal.pem。它无法在远程主机上知道它。如果您尝试使用该怎么办? x.x.x.189:/home/ec2-user/.ssh/internal.pem

答案 1 :(得分: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