小编Saq*_*Ali的帖子

如何基于镜像“ python:2.7”在Docker容器中安装AWS CLI

我有一个看起来像这样的dockerfile:

FROM python:2.7
RUN pip install awscli --upgrade --user
Run Code Online (Sandbox Code Playgroud)

从此dockerfile构建docker映像后,即可运行它。但是当我进入容器并尝试运行AWS CLI时,找不到它,因为它不在PATH环境变量中:

$ docker exec -ti ec4934370e37 /bin/bash

root@ec4934370e37:~# aws
bash: aws: command not found

root@ec4934370e37:/# find / -name aws
/root/.local/bin/aws

root@ec4934370e37:/# /root/.local/bin/aws --version
aws-cli/1.15.81 Python/2.7.15 Linux/4.9.87-linuxkit-aufs botocore/1.10.80

root@ec4934370e37:/# env | grep PATH
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)

通过包含在PATH变量中来确保AWSCLI可用的最佳/最简便/最省力的方法是什么?可以从dockerfile本身内部完成吗?

docker aws-cli

5
推荐指数
2
解决办法
7757
查看次数

如何使用 2FA 进行 python SSH tunneling?

我正在尝试编写一个连接到数据库的 python 脚本,但是只有当您首先通过 SSH 连接到堡垒主机时才能访问该数据库。从命令行,这是我必须做的来设置隧道:

$ ssh -i /path/to/my/key/file.pem -A -L 3307:mydb1.fsd23rqr.us-east-1.rds.amazonaws.com:3306 my_ssh_username1@my-bastion-host.without.2fa
[ec2-user@ip-X-X-X-X ~]$ 
Run Code Online (Sandbox Code Playgroud)

我已经使用这个sshtunnel 库创建了一个 python 脚本来做同样的事情。有用:

#!/usr/bin/env python
from sshtunnel import SSHTunnelForwarder
import MySQLdb as db
import pandas as pd

print('\nAbout to try connecting')
with SSHTunnelForwarder(
    ('my-ssh-host.without.2fa', 22),
    ssh_username='my_ssh_username1',
    ssh_pkey='/path/to/my/key/file.pem',
    remote_bind_address=('mydb1.fsd23rqr.us-east-1.rds.amazonaws.com', 3306),
    local_bind_address=('0.0.0.0', 3307)
) as tunnel:
    print "Connection Established"
    print pd.read_sql_query(
        "select 'Hello' from dual",
        db.connect(
            host='127.0.0.1',
            port=tunnel.local_bind_port,
            user='my_db_username1',
            passwd='****************',
            db='my_db_instance_1'
        )
    )
Run Code Online (Sandbox Code Playgroud)

产生:

About to try connecting
Connection Established
   Hello
0  Hello
Run Code Online (Sandbox Code Playgroud)

但现在我需要使用不同的数据库和堡垒组合。这个堡垒有 …

python ssh-tunnel multi-factor-authentication

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

在 Python 中 Base64 解码此字符串时如何避免“不正确的填充”错误

我有以下字符串,我想使用 Python 对其进行 Base64 解码。

eyJqa3UiOiJodHRwczovL2U5N2I4YTlkNjcyZTRjZTQ4NDVlYzY5NDdjZDY2ZWY2LXNiLmJhYXMubmludGVuZG8uY29tLzEuMC4wL2NlcnRpZmljYXRlcyIsImtpZCI6ImZlOWRiYmZmLTQ3MGItNDZjOC04YmFmLTFiNzY5OGRlZTViZSIsImFsZyI6IlJTMjU2In0.eyJpc3MiOiJodHRwczovL2U5N2I4YTlkNjcyZTRjZTQ4NDVlYzY5NDdjZDY2ZWY2LXNiLmJhYXMubmludGVuZG8uY29tIiwiZXhwIjoxNTQ1MTg1NDk2LCJ0eXAiOiJpZF90b2tlbiIsImF1ZCI6IjhkOTc1NTllNjNlY2NkNTYiLCJiczpkaWQiOiI2NjJhZTQwOWYwNTQyYTBjIiwic3ViIjoiOTNkYmYwNDdiYTI3NzQ5NSIsImp0aSI6IjY1NDg4ZjJmLTI1NzAtNDBkYy04ODQ3LTMzODNlZWIxMGJiYiIsIm5pbnRlbmRvIjp7ImFpIjoiMDEwMGY4MDAwMDQ5MjAwMCIsImF2IjoiMDAwMCIsImVkaSI6ImJjNTdiYmM3MTZlMDA1MGFmOWRhN2NkYTIzMWRjZDgyIiwiYXQiOjE1NDUxNzQ2OTZ9LCJpYXQiOjE1NDUxNzQ2OTZ9。ZMUIt3wYrbfhXnnDh4WraGlKrZy0YuL5prluY70sU_-0W5XvWIB-xmTrLz7LJWHEGwTskcWf81_HBq_mSb75rMfTAEBwBmOJ4ITmhdnXksz8w7EDOWuPPSEft5XLMNOMD16ztEOYe5ddU_iqNEbT56L7fcAJEXv0FWy6H_OutxOglYpDaNkcj6CWJ7dpA0JbqerR9dEszaLwyn1ZBDPVD0YeAIm5bEr61imeedzMb0amxlTl4R87mqK6epsFUnRy6p6Klr27_DlTLQ-gej09W7NeNzONCj4thHgCr9szAiaN28krfTc2fobz3qFCoC_eQghiIIZBe_-Lksng3Eg6tw

当我转到这个https://www.base64decode.org/并将其放入时,我可以看到解码字符串的第一部分是可读的纯文本:

在此处输入图片说明

但是,当我尝试使用 Python 对其进行解码时,它失败了:

>>> import base64
>>> x = "eyJ......"
>>> base64.b64decode(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/base64.py", line 76, in b64decode
    raise TypeError(msg)
TypeError: Incorrect padding
Run Code Online (Sandbox Code Playgroud)

我尝试了这种补救措施。但它并没有改变由此产生的错误。我该如何解决这个问题?为什么它不像那个网站那样解码?

python base64 decode

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

如何使用 pyJWT 验证此 JWT 上的签名?

我收到了 JWT 令牌。\n我有兴趣解压它并验证它的内容。

\n\n

我想使用pyJWT库来做到这一点。请看下面的小程序。

\n\n

我已成功对 JWT 进行 Base64 解码。我已经从网上检索到匹配的JWK。但我不知道接下来要做什么来验证签名。

\n\n

当我尝试执行jwt.decode()以下操作时,出现错误jwt.exceptions.DecodeError: Not enough segments

\n\n
# !/usr/bin/env python\n\nimport jwt\nimport base64\nimport json\nimport requests\n\nmy_jwt = "eyJqa3UiOiJodHRwczovL2U5N2I4YTlkNjcyZTRjZTQ4NDVlYzY5NDdjZDY2ZW" \\\n         "Y2LXNiLmJhYXMubmludGVuZG8uY29tLzEuMC4wL2NlcnRpZmljYXRlcyIsImtp" \\\n         "ZCI6ImZlOWRiYmZmLTQ3MGItNDZjOC04YmFmLTFiNzY5OGRlZTViZSIsImFsZy" \\\n         "I6IlJTMjU2In0.eyJpc3MiOiJodHRwczovL2U5N2I4YTlkNjcyZTRjZTQ4NDVl" \\\n         "YzY5NDdjZDY2ZWY2LXNiLmJhYXMubmludGVuZG8uY29tIiwiZXhwIjoxNTQ1MT" \\\n         "g1NDk2LCJ0eXAiOiJpZF90b2tlbiIsImF1ZCI6IjhkOTc1NTllNjNlY2NkNTYi" \\\n         "LCJiczpkaWQiOiI2NjJhZTQwOWYwNTQyYTBjIiwic3ViIjoiOTNkYmYwNDdiYT" \\\n         "I3NzQ5NSIsImp0aSI6IjY1NDg4ZjJmLTI1NzAtNDBkYy04ODQ3LTMzODNlZWIx" \\\n         "MGJiYiIsIm5pbnRlbmRvIjp7ImFpIjoiMDEwMGY4MDAwMDQ5MjAwMCIsImF2Ij" \\\n         "oiMDAwMCIsImVkaSI6ImJjNTdiYmM3MTZlMDA1MGFmOWRhN2NkYTIzMWRjZDgy" \\\n         "IiwiYXQiOjE1NDUxNzQ2OTZ9LCJpYXQiOjE1NDUxNzQ2OTZ9.ZMUIt3wYrbfhX" \\\n         "nnDh4WraGlKrZy0YuL5prluY70sU_-0W5XvWIB-xmTrLz7LJWHEGwTskcWf81_" \\\n         "HBq_mSb75rMfTAEBwBmOJ4ITmhdnXksz8w7EDOWuPPSEft5XLMNOMD16ztEOYe" \\\n         "5ddU_iqNEbT56L7fcAJEXv0FWy6H_OutxOglYpDaNkcj6CWJ7dpA0JbqerR9dE" \\\n         "szaLwyn1ZBDPVD0YeAIm5bEr61imeedzMb0amxlTl4R87mqK6epsFUnRy6p6Kl" \\\n         "r27_DlTLQ-gej09W7NeNzONCj4thHgCr9szAiaN28krfTc2fobz3qFCoC_eQgh" \\\n         "iIIZBe_-Lksng3Eg6tw"\n\ndecoded_token = [\n    base64.b64decode(i + \'=\' * (-len(i) % 4))\n    for i in my_jwt.split(\'.\')\n]\nheader = json.loads(decoded_token[0])\nclaims = …
Run Code Online (Sandbox Code Playgroud)

python jwt pyjwt

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

如何从 RSA 密钥对创建 JWK?

假设我有一个表示 RSA 密钥对的 python 结构,如下所示:

rsa_key_pair = {
    'private_key': '-----BEGIN PRIVATE KEY-----\nMIIEvAIBADAN__OBSCURED__qxu3sWAlY/bstTB5WfX8PA==\n-----END PRIVATE KEY-----\n',
    'public_key': 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCDDqGTiBYyoB9T5Haow5gcPBIIiltLVyM4vo8Txia1czgrk2XGH5t4dsWrcXIXjQafNb7PKelXZdRU36vIIAaZCZ0As5LtkC5D93+KO9PFLGkHxWi2G43naR9hOnrKliMjOd+JRUdApdY8c/wYJbDxGGuw7W9e3MsLABFEK+TnPTVJtO8Ix78FiuHRooWfU5ph7clfTeyundN2BNv8mO6ZSBiBAk6tN8Fwpljs96Z/3HnMQutX1/AFkMn5h+E0EV4CgLPvtRazfzoWNlIiXGmiVUVHrM1wna9jT/jyb7aoxkthkAXb6NNyCW/Znxq45Ozy27kZcw/X4WQ0QMmpgfX'
}
Run Code Online (Sandbox Code Playgroud)

如何编写将生成 JWK 的 Python 代码,该 JWK 可用于验证使用此 RSA 私钥签名的 JWT?使用的算法是 RSA256。

这个网站mkjwk完成了我正在尝试做的事情。但我正在尝试用 python 代码来做。

python rsa jwt jwk

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

使用 python 的 urllib.urlencode() 时如何转义某些字符?

我有一本字典,我想将其编码为查询参数。我正在访问的服务器期望查询如下所示:http://www.example.com?A=B,C

但是当我尝试使用urllib.urlencode构建 URL 时,我发现逗号变成了%2C

>>> import urllib
>>> urllib.urlencode({"A":"B,C"})
'A=B%2CC'
Run Code Online (Sandbox Code Playgroud)

有什么方法可以转义逗号,以便urlencode将其视为普通字符吗?

如果没有,我该如何解决这个问题?

python urllib urlencode

5
推荐指数
2
解决办法
6065
查看次数

为什么这个 docker 构建尝试安装 MySQL-python 失败?

这是我的 Dockerfile:

\n\n
FROM python:2.7\nRUN apt-get update && apt-get -y upgrade\n#RUN apt-get install -y python-pip python-dev libmysqlclient-dev\nRUN pip install --upgrade pip\nRUN pip install MySQL-python==1.2.5\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我构建它时,我收到以下错误:

\n\n
Step 4/4 : RUN pip install MySQL-python==1.2.5\n ---> Running in 60be606a8d3e\nDEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won\'t be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 …
Run Code Online (Sandbox Code Playgroud)

pip mysql-python docker

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

如何通过 grpcurl 发送时间戳?

我正在使用 GRPC/proto-buffers 在 GoLang 中编写我的第一个 API 端点。我对 Go 还很陌生。以下是我为测试用例编写的文件

package my_package

import (
    "context"
    "testing"

    "github.com/stretchr/testify/require"

    "google.golang.org/protobuf/types/known/structpb"
    "github.com/MyTeam/myproject/cmd/eventstream/setup"
    v1handler "github.com/MyTeam/myproject/internal/handlers/myproject/v1"
    v1interface "github.com/MyTeam/myproject/proto/.gen/go/myteam/myproject/v1"
)

func TestEndpoint(t *testing.T) {
    conf := &setup.Config{}

    // Initialize our API handlers
    myhandler := v1handler.New(&v1handler.Config{})

    t.Run("Success", func(t *testing.T) {
        res, err := myhandler.Endpoint(context.Background(), &v1interface.EndpointRequest{
            A: "S",
            B: &structpb.Struct{
                Fields: map[string]*structpb.Value{
                    "T": &structpb.Value{
                        Kind: &structpb.Value_StringValue{
                            StringValue: "U",
                        },
                    },
                    "V": &structpb.Value{
                        Kind: &structpb.Value_StringValue{
                            StringValue: "W",
                        },
                    },
                },
            },
            C: &timestamppb.Timestamp{Seconds: 1590179525, Nanos: 0},
        })
        require.Nil(t, err)

        // …
Run Code Online (Sandbox Code Playgroud)

go protocol-buffers grpcurl

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

如何在 Go 中将 Postgres UUID 转换回人类可读的字符串?

UUID Go Postgres 库定义了这样的类型:

\n
type UUID struct {\n    UUID   uuid.UUID\n    Status pgtype.Status\n}\n\nfunc (dst *UUID) Set(src interface{}) error {\n<Remainder Omitted>\n\n\n    \n
Run Code Online (Sandbox Code Playgroud)\n

我的代码使用这个库:

\n
import pgtype/uuid\n\nstring_uuid := uuid.New().String()\nfmt.Println("string_uuid = ", string_uuid)\nmyUUID := pgtype.UUID{}\nerr = myUUID.Set(string_uuid)\nif err != nil {\n    panic()\n}\nfmt.Println("myUUID.Bytes = ", myUUID.Bytes)\nfmt.Println("string(myUUID.Bytes[:]) = ", string(myUUID.Bytes[:]))\n
Run Code Online (Sandbox Code Playgroud)\n

这是输出:

\n
string_uuid =  abadf98f-4206-4fb0-ab91-e77f4380e4e0\nmyUUID.Bytes =  [171 173 249 143 66 6 79 176 171 145 231 127 67 128 228 224]\nstring(myUUID.Bytes[:]) =  \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdBO\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdC\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\n
Run Code Online (Sandbox Code Playgroud)\n

abadf98f-4206-4fb0-ab91-e77f4380e4e0一旦将其放入myUUIDwhich is 类型中,如何才能恢复到原始的人类可读的 UUID …

byte go

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

如何在视图中包装Django表单向导?

这个问题与以前在此处提出并回答的问题高度相关:如何在视图中包装FormWizard?

有人可以发布他们如何成功地将Django表单向导包装到视图中的确切细节,以便可以使用login_required装饰器吗?在互联网上有很多关于这个主题的讨论,但它们似乎都不完整,因为它们实际上并没有显示它们如何定义它们的表格向导类.

当我将浏览器指向视图时,我得到以下异常:

__init__() takes exactly 1 non-keyword argument (2 given) in views.py line #108
Run Code Online (Sandbox Code Playgroud)

当我实例化Form Wizard对象时它会传递什么参数,以至于它不会给我这个错误?如果您有一些有效的示例代码,请发布.

这是我的urls.py文件中的最新信息:

url(r'^createObject/$', views.createObjectView, name='createObject'),
Run Code Online (Sandbox Code Playgroud)

这是我的views.py文件中的最新内容:

CREATE_OBJECT_FORMS = [
    ("createMyForm0", createObjectForm0),
    ("createMyForm1", createObjectForm1),
    ("createMyForm2", createObjectForm2),
    ("createMyForm3", createObjectForm3),
]

CREATE_OBJECT_TEMPLATES = {
    "createMyForm0": "myApp/form0.html",
    "createMyForm1": "myApp/form1.html",
    "createMyForm2": "myApp/form2.html",
    "createMyForm3": "myApp/form3.html",
}




@login_required
def createObjectView(request):
    # Set up the dictionary of initial data for the form
    # In this case, we are pre-filling some data from the first form only
    initial = {0: {}}

    # …
Run Code Online (Sandbox Code Playgroud)

django django-forms django-views

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