当前位置: 首页 > 面试题库 >

Boto在EC2实例上执行Shell命令

闾丘冠玉
2023-03-14
问题内容

我是EC2和boto的新手。我有一个正在运行的EC2实例,我想执行一个shell命令,例如apt-get update通过boto。

我进行了大量搜索,发现user_data在run_instances命令中使用了解决方案,但是如果实例已经启动怎么办?

我什至不知道是否可能。本参考资料中的任何线索都会有很大帮助。


问题答案:

boto.manage.cmdshell模块可用于执行此操作。要使用它,您必须安装paramiko软件包。一个简单的用法示例:

import boto.ec2
from boto.manage.cmdshell import sshclient_from_instance

# Connect to your region of choice
conn = boto.ec2.connect_to_region('us-west-2')

# Find the instance object related to my instanceId
instance = conn.get_all_instances(['i-12345678'])[0].instances[0]

# Create an SSH client for our instance
#    key_path is the path to the SSH private key associated with instance
#    user_name is the user to login as on the instance (e.g. ubuntu, ec2-user, etc.)
ssh_client = sshclient_from_instance(instance,
                                     '<path to SSH keyfile>',
                                     user_name='ec2-user')
# Run the command. Returns a tuple consisting of:
#    The integer status of the command
#    A string containing the output of the command
#    A string containing the stderr output of the command
status, stdout, stderr = ssh_client.run('ls -al')

这是从记忆中键入的,但我认为是正确的。

您还可以签出Fabric(http://docs.fabfile.org/),它具有相似的功能,但也具有更为复杂的功能。



 类似资料:
  • 本文向大家介绍shell中嵌套执行expect命令实例,包括了shell中嵌套执行expect命令实例的使用技巧和注意事项,需要的朋友参考一下 一直都想把expect的操作写到bash脚本里,这样就不用我再写两个脚本来执行了,搞了一下午终于有点小成就,给大家看看吧. 系统:centos 5.x 1.先安装expect 2.脚本内容: 这样写的话,就方便得很多,一个脚本就包括完了.

  • 我有一个案例,我想问我可以解决与Spring壳。我有一个Main.jar应用程序,它有几个部署在Wildly服务器上的Spring任务。在我的例子中,我不能停止或重新部署main.jar,因为必须不停地提供服务。

  • 问题内容: 我正在寻找在Go中执行shell命令,并在程序中以字符串形式获取结果输出。我看到了Rosetta Code 版本: 但这并不能以我可以通过编程方式访问的方式捕获实际的标准或错误-那些仍会打印到常规的stdout / stderr。我看到使用Pipe作为out或err可以在其他地方提供帮助,但是没有如何执行此操作的示例。有任何想法吗? 问题答案: 该答案不代表Go标准库的当前状态。请查看

  • 问题内容: 我仍在尝试掌握如何运行linux或Windows shell命令并在node.js中捕获输出的细节。最终,我想做这样的事情… 重要的一点是必须对全局范围的变量(或对象)可用。我尝试了以下功能,但是由于某种原因,我被打印到控制台了。 我很难理解代码在哪里突破了…该模型的非常简单的原型可以工作… 有人可以帮助我了解为什么有效,但是无效吗?FWIW,我需要使用,因为缓冲区限制为200KB。

  • 问题内容: 我正在尝试从GNU / Linux平台上的Java应用程序执行shell命令。问题是,尽管它可以从bash成功运行,但调用另一个Java应用程序的脚本永远不会结束。我试图调试它: 我尝试使用:ProcessBuilder(); 和Runtime.getRuntime()。exec(cmd); 看起来它正在等待完成。有任何想法吗? 谢谢,Laurențiu 问题答案: 您是否正在处理标准

  • 问题内容: 我正在尝试在我编写并按下的应用程序中从应用程序仿真器终端(您可以在Google Play中找到它)执行此命令enter,因此请编写: 然后再次按,并使用的新功能开始录制屏幕。 因此,我尝试使用以下命令从Java执行相同的代码: 但是不起作用,因为未创建文件。显然,我在装有android kitkat的有根设备上运行。问题出在哪里?我该如何解决?因为从终端仿真器工作并且在Java中不行?