连接到gce实例并运行命令

时间:2017-06-04 20:22:16

标签: python google-compute-engine paramiko

我有一个简单的请求。我想连接到现有的谷歌计算引擎实例,运行命令,然后关闭连接。

我使用了很棒的示例代码here来创建和删除实例。

此外,我还有一个运行良好的启动脚本。

现在我正在阅读this article以使用paramiko连接到我的实例。这可能是也可能不是最好的事情,所以如果我走错了路,请纠正我。

我有以下示例代码:

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(
    paramiko.AutoAddPolicy())

ssh.connect('35.***.***.**',username='user',password='pass')
stdin, stdout, stderr = ssh.exec_command("sudo su -")
stdin, stdout, stderr = ssh.exec_command("ls -l")
stdout.readlines()

现在 - 我不确定我应该使用哪个用户名或密码。

当我运行此代码时,我没有按照自己的意愿获取根目录中的文件和目录列表,但我确实在默认用户帐户的home中获得了文件和目录列表 - 所以它是连接。

我的目标是连接到gce实例,运行命令,就是这样!由于某种原因,它比我预期的更棘手。我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

如果您遇到类似的用例,可以浏览gcloud ssh。它对我有用,但如果这是最佳实践,我无法评论。

我的解决方案如下:

import subprocess
def check_for_completion(instance_name = ""):
    cmd = "gcloud compute ssh  %s --zone=us-east1-b --command=\"sudo -S -i -u root -p '' ls /root/temp/ \""%(instance_name)
    try:
        res = subprocess.check_output(cmd, shell=True)
        items = str(res).split('\n')

        return {'response':items,'complete':False}
    except:
        return {'response':None,'complete':True}