小编x3n*_*r0s的帖子

jq - 当我已经深入到对象的子项中时,如何打印对象的父值?

假设我有以下JSON,存储在我的变量jsonVariable中.

{
    "id": 1,
    "details": {
        "username": "jamesbrown",
        "name": "James Brown"
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用以下代码使用jq解析此JSON:

echo $jsonVariable | jq '.details.name | select(.name == "James Brown")'
Run Code Online (Sandbox Code Playgroud)

这会给我输出

詹姆斯布朗

但是如果我想得到这个人的身份怎么办?现在,我知道这是一个粗略而简单的例子 - 我正在使用的程序是5或6级深度,除了select之外还有许多不同的JQ函数.在执行各种过滤方法后,当我已经深入5或6层时,我需要一种方法来选择父项的字段.

有人可以帮忙吗?是否有任何"反向"的方式,回到父母身边?(不确定我是否有意义!)

json jq

23
推荐指数
1
解决办法
1万
查看次数

如何使用boto3获取我拥有的EBS快照列表?

我过去使用boto3查找所有图像not public,以便将我的返回图像列表从数千个减少到可管理的数字.

但是,我无法弄清楚如何以这种方式过滤EBS快照.我尝试了以下内容

ec2.describe_snapshots(OwnerIds=self)
Run Code Online (Sandbox Code Playgroud)

但是,OwnerIds只会获取ID列表.

我一直在阅读以下文档:describe_snapshots,并说明了这一点

结果可以包括指定所有者的AWS账户ID,Amazon拥有的快照的amazon,或者您拥有的快照的self

但我无法解决这个问题self.有人可以帮忙吗?谢谢.

python amazon-ec2 amazon-web-services boto3

10
推荐指数
1
解决办法
5868
查看次数

jq - 如何选择字段为"false"的对象?

我在向jq实现布尔检查时遇到了麻烦.如果我有一个字段"test",它可以是布尔值true或false,我如何使用select来查找它?

最初我尝试了以下内容:

jq '.[] | select(.test=="false")'
Run Code Online (Sandbox Code Playgroud)

但我认为我在这里比较字符串所以这不起作用.

boolean jq

5
推荐指数
1
解决办法
3322
查看次数

通过 AWS EC2 实例用户数据添加到 authorized_keys

最近我犯了一个愚蠢的错误,就是在我的 AWS 实例上清除了我用户的 ~/.ssh/authorized_keys 文件的内容。因此,我无法再通过 ssh 连接到该实例。

我意识到我可以通过 AWS EC2 实例用户数据重新添加这些密钥。然而,到目前为止我还没有运气。我停止了我的实例,将以下内容添加到用户数据中并再次启动它:

#!/bin/bash
> /home/myUser/.ssh/authorized_keys
echo "ssh-rsa aaa/bbb/ccc/ddd/etc== mykeypair" >> /home/myUser/.ssh/authorized_keys
chown myUser:myUser /home/myUser/.ssh/authorized_keys
chmod 600 /home/myUser/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

这应该清空文件,添加公钥对并确保文件上存在正确的权限。

但是我的私钥仍然被拒绝。

我知道密钥是正确的,所以它一定与我的实例用户数据有关。我也试过在所有命令前加上“sudo”。

ssh amazon-web-services

5
推荐指数
1
解决办法
5348
查看次数

如果文件不存在,AWS CLI S3 rm 命令不会产生错误

我有一个 bash 脚本,它迭代文件名数组并将它们从 S3 中删除。

以下命令:

aws s3 rm "s3://myBucket/myFolder/myFile.txt"
Run Code Online (Sandbox Code Playgroud)

将产生此输出。

delete: s3://myBucket/myFolder/myFile.txt
Run Code Online (Sandbox Code Playgroud)

通过验证已在 AWS 控制台中删除,我可以看到删除已成功。但是,如果我再次迭代同一列表,即使文件消失,我也会得到相同的输出。

有没有什么方法(仅使用 rm 命令)表明 AWS CLI 尝试删除该文件但找不到它?

amazon-s3 amazon-web-services

4
推荐指数
1
解决办法
4547
查看次数

如何使用curl设置Azure KeyVault机密的值

我之前曾使用curl 从我的Azure KeyVault 检索机密。

首先,我检索我的令牌并获取我的 keyvault 的 url:

token=$(curl -s 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true | awk -F"[{,\":}]" '{print $6}')

keyvaulturl="https://myTestKeyVault-keyvault.vault.azure.net/secrets"
Run Code Online (Sandbox Code Playgroud)

然后我就可以访问我的 KeyVault

curl -s ${keyvaulturl}/xxx?api-version=2016-10-01 -H "Authorization: Bearer ${token}"
Run Code Online (Sandbox Code Playgroud)

然而这只是为了获取秘密。有没有办法通过curl来更新它们?或者使用 azure cli 更好?在这种情况下,最好的自动化身份验证形式是什么?

azure azure-keyvault

3
推荐指数
1
解决办法
6934
查看次数

如何使用AWS CLI获取最近启动的EC2实例?

我当前正在使用以下CLI命令来获取给定实例名称标签“ myInstanceName” 的实例PublicIPAddressLaunchTime

aws ec2 describe-instances --filters 'Name=tag:Name,Values=myInstanceName' \ 
    --region us-east-1 \
    --query 'Reservations[*].Instances[*].{PublicIpAddress: PublicIpAddress, LaunchTime: LaunchTime}'
Run Code Online (Sandbox Code Playgroud)

结果如下:

[
    {
        "LaunchTime": "2019-01-25T11:49:06.000Z",
        "PublicIpAddress": "11.111.111.11"
    }
]
Run Code Online (Sandbox Code Playgroud)

很好,但是如果有两个具有相同名称的实例,我将在结果JSON中得到两个结果。我需要找到一种获取给定名称的最新实例的方法。

解决方案更新

这个问题是EC2实例特有的。可以使用两种不同的方法来解决该问题,下面对此进行回答:使用JMESPath
使用jq解析结果

请参阅此相关问题,以获取按日期对JMESPath进行更一般的排序以及进一步阅读的信息。

amazon-ec2 amazon-web-services aws-cli

3
推荐指数
2
解决办法
516
查看次数

立即逃离两个美元符号

我有一个在 Bash 脚本中运行的 SQL 语句。它包含连续两个美元符号的实例,例如:

psql -U $username -h $DATABASE_HOST $DATABASE_NAME -c "DO $$ DECLARE myVar varchar; END$$"
Run Code Online (Sandbox Code Playgroud)

怎样才能摆脱这两种情况呢?

bash

2
推荐指数
1
解决办法
738
查看次数

将内联“--command”参数与 psql 一起使用不会在 .psql_history 中生成日志

当我在 Ubuntu 上手动登录我的 PostgreSQL 服务器并执行命令时,我可以发现它已登录/root/.psql_history

但是,当我尝试通过 bash 脚本在 bash 脚本中运行命令时psql -c "*query goes here*",该命令返回数据但未登录.psql_history

有没有人遇到过这个?

postgresql ubuntu psql

2
推荐指数
1
解决办法
74
查看次数

Postgres-即使我的角色/用户被授予“读取”权限,也无法从表中进行“选择”

我在postgres上具有管理员角色/用户和开发人员角色。开发人员角色继承了我为方便将来而创建的“ readaccess”角色的属性。如果我运行\ du,我得到:

    Role name    |                         Attributes                         |     Member of     
-----------------+------------------------------------------------------------+-------------------
 developers      |                                                            | {readaccess}
 rds_replication | Cannot login                                               | {}
 rds_superuser   | Cannot login                                               | {rds_replication}
 rdsadmin        | Superuser, Create role, Create DB, Replication, Bypass RLS+| {}
                 | Password valid until infinity                              | 
 rdsrepladmin    | No inheritance, Cannot login, Replication                  | {}
 readaccess      | Cannot login                                              +| {}
                 | Password valid until infinity                              | 
 admin           | Create role, Create DB                                    +| {rds_superuser}
                 | Password valid until infinity                              | 
Run Code Online (Sandbox Code Playgroud)

我已通过以下方式授予对我的开发人员帐户和我的readaccess帐户的读取访问权限 …

postgresql

1
推荐指数
1
解决办法
1790
查看次数