我正在尝试使用部署工具fabric . 我成功地为CentOS和Ubuntu EC2实例的主机执行fab命令 . 但是,我假装执行Amazon Linux EC2实例的主机 .

我执行的命令如下:

$ fab -f fab_test.py getHostname

fab_test.py:

$ cat fab_test.py
from fabric.api import run, env

env.hosts = ["*** host ip addr ***"]
env.user = "ec2-user" # clduser for CentOS and ubuntu for UbuntuOS
env.port = "*** port number ***"
env.key_filename = "/path/to/clduser.pem"

def getHostname():
    run("hostname")

成功结果:

[*** host ip addr ***] Executing task 'getHostname'
[*** host ip addr ***] run: hostname
[*** host ip addr ***] out: host-name
[*** host ip addr ***] out:


Done.

结果失败:

[*** host ip addr ***] Executing task 'getHostname'
[*** host ip addr ***] run: hostname
[*** host ip addr ***] out: [ec2-user@host-name ~]$

“failed”表示fabric等待输入,不执行“hostname”命令 . 当我输入一些命令来提示时,该命令在远程主机中正确执行 . 所以我认为 Build ssh连接是可以的 . 刚刚创建了Amazon Linux的实例,并且没有安装任何内容 . 来宾机也是亚马逊Linux的EC2实例 .

有谁能解决这个问题?我在谷歌搜索找不到任何解决方案 . 谢谢 .