我跟随了很多与此主题相关的问题。
我的情景:
本地主机 - >网关 - >远程主机
我使用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文件位于网关服务器中。
当我运行此程序时,我发现找不到文件错误。
感谢您的帮助!!
答案 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