AWS的外壳
nephele的Python项目详细描述
侄子:AWS的外壳。
```````````````````````````
overview
==
所以我把这个放在一起:
python中一个非常简单的交互式cli shell。
我邀请
请求删除丢失的功能、错误修复等。
警告
==
此工具非常不成熟。只要我使用它,它就会发生很大的变化,因为我会把它做的事情(或不做的事情)和它做(或不做的事情)的方式看作是我工作流程中的障碍。
也希望语法处于相当稳定的变化状态。
代码块:
pip install nephele
用法
==
…代码块::bash
$nephele
(aws)/:帮助
其格式如下:
…代码块::
profile:{profile name}
profiles:
{profile name}:
awsprofile:{aws profile name}
ssh跳转主机:{jump主机名或ip}
ssh跳转用户:{jump主机名}
{profile-name-2}:
awsprofile:{aws profile name}
ssh跳转主机:{jump主机名或ip}
ssh-jump-user:{jump-host-user name}
ssh宏:
{macro-name}{remote命令}
ssh支持
==
ssh-jump-host}
ssh-jump-host条目,这可能是‘侄子’最好的
部分,这可能是‘侄子’最好的一部分,这可能是‘侄子’最好的一部分。
侄子罐头向一个实例发送sh,而不必计算它的
ip、修改/etc/host或知道它的aws实例id以外的任何信息:
。bash
(aws)/:ssh{instance-id}
/usr/bin/ssh{firfirst-privatip}
最后一次登录:从{someter}{someter}{someter}
{{{{{{{{{{{{{}{}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{.com/amazon linux ami/2016.09-release-notes/
group,您甚至不需要知道实例id。您可以通过实例索引ssh(在
自动缩放组的实例列表中):
代码块::bash
(aws)/stack:{stack}/stack:{substack}/:asg 0
加载自动缩放组0
加载堆栈资源arn:{arn}
自动缩放组:{name}
==实例====
0健康az-2a{实例id}
1健康az-2b{实例id}
2健康az-2c{实例id}
(aws)/stack{stack}/stack:{substack}/asg:{asg}/:ssh 2
/usr/bin/ssh{firfirst privatip}
最后一次登录:{some}{some}来自{so{so{some}
{br/>https://aws.amazon.com/amazon linux ami/2016.09-release-notes/
还支持端口转发G!
…代码块::bash
(aws)/stack:{stack}/stack:{substack}/asg:{asg}/:ssh 2-l88888:localhost:88888
/usr/bin/ssh{first privatip}
最后一次登录名:{some}来自{{someter}
{;\uuuuuuuuuuuuuuuuuuuuuuu124;
https://aws.amazon.com/amazon-linux-ami/2016.09-release-notes/
$exit
(aws)/stack:{stack}/stack:{substack}/asg:{asg}/:ssh 2-l 8888<;——有用的速记!
那么,如何为此设置`~/.nephele/config.yaml`呢?如果您的
aws管理员设置了一些设置,以便在命令行中使用ssh
forward.如果需要ssh的"-j"选项来连接到
主机,请分别使用
`profiles.{profile}.ssh jump host`和
`profiles.{profile}.ssh jump user`指定跳转主机用户和密码。
ssh还支持根据实例标记(或
other instancc)选择ssh密钥。e元数据)。要使用它,请实现一个ssh插件,并将其放入`~/.nephele/plugins'中以完成此任务。下面是一个
示例:
…代码块::python
import os
class sshplugin:
def getusername(self,instance,profile):
"
给定aws实例和侄子配置文件的描述,
确定在访问该实例时要使用的用户名。
"
返回"ec2 user"
def getidentityfile(self,instance,profile):
"
给定aws实例和侄子配置文件的描述,
确定ssh到该实例时要使用的ssh标识文件的名称。
"
返回os.path.join(os.path.expanduser(~"、".ssh"、"keys"、"prod"、"somekey.pem")
>命令引用
====
我们使用优秀的argparse模块指定如何使用命令。此参考仅包含说明;有关
语法的详细信息,请使用任何命令的"-h"选项。
可用子命令:
*config print-打印当前配置
*config reload-从磁盘重新加载当前配置
*config set-更改配置中的设置
*config save-将配置保存到磁盘
^^^
MFA令牌。侄子将执行
相应的"aws"命令行来验证该令牌。
instance
^^^^^^^^
这与"ssh"不同,因为它不是连接到实例的
u;只是在shell中导航
进行详细检查。
profile
^^^^^^^^^
e.
注意:此命令在更具体的上下文中扩展,例如在自动缩放组内的
up
^^
向上导航一个级别。
忘了列。也许
最后一点是显而易见的:-d
是的,您可以通过查看提交日志来了解这一切。为什么我要让你经历这些?
*现在可以通过运行"mfa{token}"来输入mfa令牌。这是目前的基本支持,如果您以前从未使用过[AWS MFA](https://github.com/lonelyplanet/aws-mfa),那么它很可能会崩溃。
*现在您可以使用ssh进行短距离端口转发。基本上,如果要通过同一个本地端口转发远程服务器上的端口,
就不再需要使用`-l{port}:localhost:{port}`
语法。相反,只需说"-l{port}"。您仍然可以使用服务器
作为到另一台服务器的隧道,或者使用旧语法选择不同的本地/远程
端口号。
*启动时,Nevele会自动为您运行"堆栈"。
*--配置文件(缩写:-p)选择特定的AWS配置文件。当其他流程要求您的默认配置文件是您希望Nephele使用的配置文件以外的配置文件时,这将非常有用。
*Nephele现在知道如何获取您的AWS DEVICE信息。我还试图使其文件与aws mfa兼容,因此理论上您不应该再需要单独的aws mfa工具了-只需使用nevele来管理您的.aws/{mfa相关文件},并且您应该能够很好地
go。当然,我妻子总是说她想学理论,
因为一切正常……理论上,
*--mfa(缩写:-m)在启动时提供mfa命令。如果您*知道*
您缓存的MFA凭据已过期,这就省去了
等待Nephele被拒绝访问的步骤。
*启动Nephele后,现在有一个"profile"命令来更改配置文件。
*"stacks"现在添加了"-e"和"-i"参数,这样您就可以lude或
在筛选器中包含新的堆栈状态。
*`~/.nephele/config.yaml`是新的配置文件。它现在有一个设置,
"profile"。示例:
…代码块::config
--
profile:{aws profile name}
*`ssh`命令现在有一个`-r`/`--replace key`选项。在aws中,ip地址很有可能被回收,特别是当您在迭代cloudformation堆栈的模板时创建/拆除cloudformation堆栈时。当这种情况发生时,您不需要对`~/.ssh/known_hosts`进行
黑客攻击,就可以通过ssh连接到主机。这个
选项将运行相应的命令(`ssh keygen-r{host}`),以便在运行ssh之前删除条目。
*自动缩放组现在支持'terminateinstance'命令。
*awsstack现在打印堆栈事件和输出,就好像它们是正常的堆栈资源一样。
*增加了在列出堆栈时全局搜索的能力。例如,"stacks*cass*`
将列出所有以"cass"为子串的堆栈。
*从aws shell重命名为nephele(在神话云
nymph之后),并通过pip安装工具。
*现在可以在自动缩放组中跨实例运行命令。导航到组并使用"run"命令。
*CloudWatch日志记录支持已开始。到目前为止,这是非常初级的
您可以看到堆栈中的日志组,使用"loggroup"命令选择它们,并查看是否存在流。
输出尚未美化,您实际上还看不到这些流的内容。很快。
*IAM角色支持也已开始。它也很初级,所以远。您可以在cloudformation堆栈中看到角色,使用"role"可以查看到
策略文档级别。输出尚未美化
,它是纯只读的。我不想美化它,因为
pprint()对我来说已经足够好了,但是如果
对您有意义,我当然欢迎使用补丁程序。
*云表日志支持将继续添加
`logstream`命令,该命令可从"loggroup"内部获得。
right n当我对日志扫描api更加熟悉时,我计划添加一些在"loggroup"级别的跨流日志查看功能,可能是以类似grep的功能的形式。当然,没有承诺,
只记录我的头在哪里。
*在自动缩放组中,"printInstances"命令有两个新的选项:`-t'打印标记列表,`-d'打印所有
节点的详细信息。
*在堆栈中,"copy"命令现在知道如何复制ASG的ID
到剪贴板。
*ASG现在支持"printActivities"和"printActivity"命令
,以帮助调试由自动缩放启动的更改。
*ASG现在支持通过"printpolicy"命令显示缩放策略。
*ASG的"run"命令支持跳过主机的"-s"选项
*堆栈现在显示其参数。这些是为了适应而逃脱和"消失的"。将添加一个命令以在某个点打印完整的参数值。*stdplus.elipsifyMiddle现在是一个东西。
*ssh命令不再依赖于` ~/.ssh/config`工作,而是
支持` ~/.nephele/config.yaml`
*ssh现在支持奇妙的-j选项(您需要一个最新的ssh
客户端才能工作)
*ssh有非常有限的功能。d宏观能力。虽然它还没有
变量替换的方法,但是您可以这样做:
…代码块::config
ssh宏:
cassandrapid:pgrep-f cassandrademon
(aws)/stack:…/asg:…/:ssh-m cassandrapid
/usr/bin/ssh 192.168.1.1-q-j jump-host.us-west-2.generic.domain pgrep-f cassandrademon
3285
(aws)/stack:…/asg:…//:
*您现在可以使用"config reload"命令重新加载配置。
*已开始向此文档添加命令引用。
*现在有一种机制,可以根据实例元数据确定ssh时要使用的用户和标识文件。
```````````````````````````
overview
==
所以我把这个放在一起:
python中一个非常简单的交互式cli shell。
我邀请
请求删除丢失的功能、错误修复等。
警告
==
此工具非常不成熟。只要我使用它,它就会发生很大的变化,因为我会把它做的事情(或不做的事情)和它做(或不做的事情)的方式看作是我工作流程中的障碍。
也希望语法处于相当稳定的变化状态。
代码块:
pip install nephele
用法
==
…代码块::bash
$nephele
(aws)/:帮助
其格式如下:
…代码块::
profile:{profile name}
profiles:
{profile name}:
awsprofile:{aws profile name}
ssh跳转主机:{jump主机名或ip}
ssh跳转用户:{jump主机名}
{profile-name-2}:
awsprofile:{aws profile name}
ssh跳转主机:{jump主机名或ip}
ssh-jump-user:{jump-host-user name}
ssh宏:
{macro-name}{remote命令}
ssh支持
==
ssh-jump-host}
ssh-jump-host条目,这可能是‘侄子’最好的
部分,这可能是‘侄子’最好的一部分,这可能是‘侄子’最好的一部分。
侄子罐头向一个实例发送sh,而不必计算它的
ip、修改/etc/host或知道它的aws实例id以外的任何信息:
。bash
(aws)/:ssh{instance-id}
/usr/bin/ssh{firfirst-privatip}
最后一次登录:从{someter}{someter}{someter}
{{{{{{{{{{{{{}{}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{.com/amazon linux ami/2016.09-release-notes/
group,您甚至不需要知道实例id。您可以通过实例索引ssh(在
自动缩放组的实例列表中):
代码块::bash
(aws)/stack:{stack}/stack:{substack}/:asg 0
加载自动缩放组0
加载堆栈资源arn:{arn}
自动缩放组:{name}
==实例====
0健康az-2a{实例id}
1健康az-2b{实例id}
2健康az-2c{实例id}
(aws)/stack{stack}/stack:{substack}/asg:{asg}/:ssh 2
/usr/bin/ssh{firfirst privatip}
最后一次登录:{some}{some}来自{so{so{some}
{br/>https://aws.amazon.com/amazon linux ami/2016.09-release-notes/
还支持端口转发G!
…代码块::bash
(aws)/stack:{stack}/stack:{substack}/asg:{asg}/:ssh 2-l88888:localhost:88888
/usr/bin/ssh{first privatip}
最后一次登录名:{some}来自{{someter}
{;\uuuuuuuuuuuuuuuuuuuuuuu124;
https://aws.amazon.com/amazon-linux-ami/2016.09-release-notes/
$exit
(aws)/stack:{stack}/stack:{substack}/asg:{asg}/:ssh 2-l 8888<;——有用的速记!
那么,如何为此设置`~/.nephele/config.yaml`呢?如果您的
aws管理员设置了一些设置,以便在命令行中使用ssh
forward.如果需要ssh的"-j"选项来连接到
主机,请分别使用
`profiles.{profile}.ssh jump host`和
`profiles.{profile}.ssh jump user`指定跳转主机用户和密码。
ssh还支持根据实例标记(或
other instancc)选择ssh密钥。e元数据)。要使用它,请实现一个ssh插件,并将其放入`~/.nephele/plugins'中以完成此任务。下面是一个
示例:
…代码块::python
import os
class sshplugin:
def getusername(self,instance,profile):
"
给定aws实例和侄子配置文件的描述,
确定在访问该实例时要使用的用户名。
"
返回"ec2 user"
def getidentityfile(self,instance,profile):
"
给定aws实例和侄子配置文件的描述,
确定ssh到该实例时要使用的ssh标识文件的名称。
"
返回os.path.join(os.path.expanduser(~"、".ssh"、"keys"、"prod"、"somekey.pem")
>命令引用
====
我们使用优秀的argparse模块指定如何使用命令。此参考仅包含说明;有关
语法的详细信息,请使用任何命令的"-h"选项。
可用子命令:
*config print-打印当前配置
*config reload-从磁盘重新加载当前配置
*config set-更改配置中的设置
*config save-将配置保存到磁盘
MFA令牌。侄子将执行
相应的"aws"命令行来验证该令牌。
instance
^^^^^^^^
这与"ssh"不同,因为它不是连接到实例的
u;只是在shell中导航
进行详细检查。
profile
^^^^^^^^^
e.
注意:此命令在更具体的上下文中扩展,例如在自动缩放组内的
up
^^
向上导航一个级别。
忘了列。也许
最后一点是显而易见的:-d
是的,您可以通过查看提交日志来了解这一切。为什么我要让你经历这些?
*现在可以通过运行"mfa{token}"来输入mfa令牌。这是目前的基本支持,如果您以前从未使用过[AWS MFA](https://github.com/lonelyplanet/aws-mfa),那么它很可能会崩溃。
*现在您可以使用ssh进行短距离端口转发。基本上,如果要通过同一个本地端口转发远程服务器上的端口,
就不再需要使用`-l{port}:localhost:{port}`
语法。相反,只需说"-l{port}"。您仍然可以使用服务器
作为到另一台服务器的隧道,或者使用旧语法选择不同的本地/远程
端口号。
*启动时,Nevele会自动为您运行"堆栈"。
*--配置文件(缩写:-p)选择特定的AWS配置文件。当其他流程要求您的默认配置文件是您希望Nephele使用的配置文件以外的配置文件时,这将非常有用。
*Nephele现在知道如何获取您的AWS DEVICE信息。我还试图使其文件与aws mfa兼容,因此理论上您不应该再需要单独的aws mfa工具了-只需使用nevele来管理您的.aws/{mfa相关文件},并且您应该能够很好地
go。当然,我妻子总是说她想学理论,
因为一切正常……理论上,
*--mfa(缩写:-m)在启动时提供mfa命令。如果您*知道*
您缓存的MFA凭据已过期,这就省去了
等待Nephele被拒绝访问的步骤。
*启动Nephele后,现在有一个"profile"命令来更改配置文件。
*"stacks"现在添加了"-e"和"-i"参数,这样您就可以lude或
在筛选器中包含新的堆栈状态。
*`~/.nephele/config.yaml`是新的配置文件。它现在有一个设置,
"profile"。示例:
…代码块::config
--
profile:{aws profile name}
*`ssh`命令现在有一个`-r`/`--replace key`选项。在aws中,ip地址很有可能被回收,特别是当您在迭代cloudformation堆栈的模板时创建/拆除cloudformation堆栈时。当这种情况发生时,您不需要对`~/.ssh/known_hosts`进行
黑客攻击,就可以通过ssh连接到主机。这个
选项将运行相应的命令(`ssh keygen-r{host}`),以便在运行ssh之前删除条目。
*自动缩放组现在支持'terminateinstance'命令。
*awsstack现在打印堆栈事件和输出,就好像它们是正常的堆栈资源一样。
*增加了在列出堆栈时全局搜索的能力。例如,"stacks*cass*`
将列出所有以"cass"为子串的堆栈。
*从aws shell重命名为nephele(在神话云
nymph之后),并通过pip安装工具。
*现在可以在自动缩放组中跨实例运行命令。导航到组并使用"run"命令。
*CloudWatch日志记录支持已开始。到目前为止,这是非常初级的
您可以看到堆栈中的日志组,使用"loggroup"命令选择它们,并查看是否存在流。
输出尚未美化,您实际上还看不到这些流的内容。很快。
*IAM角色支持也已开始。它也很初级,所以远。您可以在cloudformation堆栈中看到角色,使用"role"可以查看到
策略文档级别。输出尚未美化
,它是纯只读的。我不想美化它,因为
pprint()对我来说已经足够好了,但是如果
对您有意义,我当然欢迎使用补丁程序。
*云表日志支持将继续添加
`logstream`命令,该命令可从"loggroup"内部获得。
right n当我对日志扫描api更加熟悉时,我计划添加一些在"loggroup"级别的跨流日志查看功能,可能是以类似grep的功能的形式。当然,没有承诺,
只记录我的头在哪里。
*在自动缩放组中,"printInstances"命令有两个新的选项:`-t'打印标记列表,`-d'打印所有
节点的详细信息。
*在堆栈中,"copy"命令现在知道如何复制ASG的ID
到剪贴板。
*ASG现在支持"printActivities"和"printActivity"命令
,以帮助调试由自动缩放启动的更改。
*ASG现在支持通过"printpolicy"命令显示缩放策略。
*ASG的"run"命令支持跳过主机的"-s"选项
*堆栈现在显示其参数。这些是为了适应而逃脱和"消失的"。将添加一个命令以在某个点打印完整的参数值。*stdplus.elipsifyMiddle现在是一个东西。
*ssh命令不再依赖于` ~/.ssh/config`工作,而是
支持` ~/.nephele/config.yaml`
*ssh现在支持奇妙的-j选项(您需要一个最新的ssh
客户端才能工作)
*ssh有非常有限的功能。d宏观能力。虽然它还没有
变量替换的方法,但是您可以这样做:
…代码块::config
ssh宏:
cassandrapid:pgrep-f cassandrademon
(aws)/stack:…/asg:…/:ssh-m cassandrapid
/usr/bin/ssh 192.168.1.1-q-j jump-host.us-west-2.generic.domain pgrep-f cassandrademon
3285
(aws)/stack:…/asg:…//:
*您现在可以使用"config reload"命令重新加载配置。
*已开始向此文档添加命令引用。
*现在有一种机制,可以根据实例元数据确定ssh时要使用的用户和标识文件。