我有一个简单的请求。我想连接到现有的谷歌计算引擎实例,运行命令,然后关闭连接。
我使用了很棒的示例代码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实例,运行命令,就是这样!由于某种原因,它比我预期的更棘手。我在这里做错了吗?
答案 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}