- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经在某些流程上苦苦挣扎了一段时间,我决定大声寻求帮助。
我有一个脚本,假设下载一些文件并将其放入某个 sftp 服务器中进行批处理。
我正在使用 alpine python 容器,我的 Dockerfile 如下所示
FROM python:3.7.1-alpine3.8
RUN \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
g++ \
gcc \
make \
libffi-dev \
openssl-dev \
openssl \
python-dev && \
echo "**** install pip packages ****" && \
pip install --no-cache-dir -U \
pip && \
pip install --no-cache-dir -U \
cryptography \
paramiko \
sshtunnel \
datetime \
boto3 \
requests \
datetime && \
echo "**** clean up ****" && \
apk del --purge \
gcc \
g++\
make \
build-dependencies && \
rm -rf \
/root/.cache \
/var/cache/apk/* \
/tmp/*
COPY settle.py /
CMD [ "python3", "./settle.py" ]
我有一个名为 Settle.py 的文件,其相关片段是:
print("creating the tunnel")
with SSHTunnelForwarder(
(loaded_json["sftp_jumpbox_address"],int(loaded_json["sftp_jumpbox_port"])),
ssh_username=loaded_json["sftp_jumpbox_user"],
ssh_pkey=privateJumpboxKey,
remote_bind_address=(loaded_json["sftp_target_address"],int(loaded_json["sftp_target_port"])),
local_bind_address=("127.0.0.1",2222)
) as tunnel:
print("making actual ssh paramiko connection")
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
pemkey = paramiko.RSAKey.from_private_key_file(privateTargetKey)
client.connect(hostname="127.0.0.1",port=2222,username=loaded_json["sftp_target_user"],pkey=pemkey, look_for_keys=False)
print("Making the sftp connection")
sftp = client.open_sftp()
# filename="testing_20181119114841390.txt"
# print(loaded_json)
uploadFolder= targetUploadFolder+"/"
print("destination file "+ filename)
sftp.chdir(uploadFolder)
print("dropping the file into the sftp")
sftp.put(sourceFileToSend,filename)
print("Closing the sftp connection")
sftp.close()
client.close()
print("Completing the upload")
except Exception as e:
print("type error: " + str(e))
每次运行它时,无论安装包、 python-dev 、 cryptograpy 的哪种组合,我仍然会遇到以下错误
创建隧道
类型错误:加载共享库 libssl.so.1.0.0 时出错:没有这样的文件或目录(/usr/local/lib/python3.7/site-packages/cryptography/hazmat/bindings/_openssl.abi3.so 需要)
同时,这个 python 脚本在我的 Mac 上运行得非常好。我不确定我错过了什么。如果有人能提供一些线索,我将不胜感激。提前致谢
编辑 1我已经通过 sshed 进入容器,当我进行搜索时,下面是我发现的内容
/ # find / -iname libssl*
/lib/libssl.so.45
/lib/libssl.so.45.0.1
/usr/lib/libssl.so.45
/usr/lib/libssl.so.45.0.1
现在不确定哪个库需要更新或需要 libssl 的符号链接(symbolic link)。由于可用版本比密码学库所需的版本要新得多。
最佳答案
在使用 Alpine 尝试了很多其他事情之后,我偶然发现了来自 Linux and Unix 的这篇文章。据说要小心 C/C++ 编写的 python 库。所以我切换到基于 Debian 的发行版,感觉它非常简单。下面的 Dockerfile 完美运行。
FROM python:3.6-slim-jessie
RUN pip install --no-cache-dir -U \
cffi \
paramiko \
sshtunnel \
datetime \
boto3 \
requests \
datetime && \
echo "**** clean up ****" && \
rm -rf /var/lib/apt/lists/*
COPY settle.py /
CMD [ "python", "./settle.py" ]
关于python - 使用 paramiko 和 sshtunnel 与 docker alpine 的 libssl 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53656368/
我正在使用 sshtunnel 连接到远程服务器并从那里连接到数据库。一切正常,除了 sshtunnel 似乎无法识别我的 ssh_private_key_password 除非我已经在别处输入了它(
我在 python 上使用 sshtunnel 模块中的 SSHTunnelForwarder。 给出下一个代码: server = SSHTunnelForwarder( (sshServe
使用Python,在执行以下操作后如何验证SSH连接是否成功: server = SSHTunnelForwarder( (host_or_ip, 22), ssh_username
我在 python 上使用 sshtunnel 模块中的 SSHTunnelForwarder。 给出下一个代码: server = SSHTunnelForwarder( (sshServe
如果我运行这段代码: import sshtunnel try: with sshtunnel.open_tunnel("hello", ssh_username="user",
在我的公司,我们目前有一个 REST API,只能由特定的跳转框访问。 我想从运行我的 Python 代码的服务器 ssh 到这个盒子,以进行休息调用。 我在下面写了这段代码,但是当我运行它时它挂起并
我的网络架构(不可更改): pc --ssh-> serv --ssh-> serv_mod --telnet-> serv_submod 现在,我正在尝试使用从pc到serv_mod的ssh隧道 p
我在本地使用以下库连接到完美运行的远程服务器: https://pypi.org/project/sshtunnel/ 但我需要将我的 Python 函数托管为 Google Cloud 函数。不幸的
我正在使用 django 和 mysql 数据库来开发 api。现在我有了将 mongodb 数据库与 django 连接的新要求。我使用了以下解决方案 from sshtunnel import S
我正在使用 MacOS,我的系统配置中的某些内容不断告诉 python 的 SSHTunnelForwarder 使用我的默认 id_rsa 文件,而不是我在下面的配置中指定的文件: >>> from
上下文: 我正在尝试通过 SSH 和 Python 连接到远程 MySQL 安装。我正在使用 paramiko 和 SSHTunnel,目前在 py 2.7 上。 我已经使用 bash shell、p
我已经在某些流程上苦苦挣扎了一段时间,我决定大声寻求帮助。 我有一个脚本,假设下载一些文件并将其放入某个 sftp 服务器中进行批处理。 我正在使用 alpine python 容器,我的 Docke
我是一名优秀的程序员,十分优秀!