连接到 gce 实例和 运行 命令
Connect to gce instance and run command
我有一个简单的要求。我想连接到一个已经存在的 google 计算引擎实例,运行 一个命令,然后关闭连接。
我使用了很棒的示例代码 here 创建和删除实例。
另外,我有一个启动脚本 运行ning 可以完美运行。
现在我正在阅读 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()
现在 - 我不确定应该使用哪个用户名或密码。
当我 运行 这段代码时,我没有得到我想要的根目录中的文件和目录列表,但我确实得到了默认用户帐户 [=12] 中的文件和目录列表=] - 所以它正在连接。
我的目标是连接到一个 gce 实例,运行一个命令,仅此而已!出于某种原因,它比我预期的要棘手。我是不是做错了什么?
如果您遇到类似的用例,可以探索 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}
我有一个简单的要求。我想连接到一个已经存在的 google 计算引擎实例,运行 一个命令,然后关闭连接。
我使用了很棒的示例代码 here 创建和删除实例。
另外,我有一个启动脚本 运行ning 可以完美运行。
现在我正在阅读 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()
现在 - 我不确定应该使用哪个用户名或密码。
当我 运行 这段代码时,我没有得到我想要的根目录中的文件和目录列表,但我确实得到了默认用户帐户 [=12] 中的文件和目录列表=] - 所以它正在连接。
我的目标是连接到一个 gce 实例,运行一个命令,仅此而已!出于某种原因,它比我预期的要棘手。我是不是做错了什么?
如果您遇到类似的用例,可以探索 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}