标签: python

如何在受限环境下管理Python?

需求:

\n\n
    \n
  • 支持数百名 Python 开发人员和/或产品服务器在高度限制的环境中运行 Python 代码。
  • \n
  • 能够提供开发人员需要的 PyPi.org 中找到的任何兼容模块。
  • \n
\n\n

环境:

\n\n
    \n
  • 没有外部访问。
  • \n
  • 内部网络可用。
  • \n
  • 支持多平台(Windows、Linux、Apple)
  • \n
  • 大部分开发人员和/或产品服务器无法访问编译工具。
  • \n
  • 至少支持最新的 Python 2.7 和 Python 3.x
  • \n
\n\n

询问:

\n\n
    \n
  • 如何为安装Python模块的分发提供支持?
  • \n
  • 如何处理那些需要编译的 Python 模块?请记住,许多机器没有可用的编译工具。
  • \n
\n\n

Def 欣赏基于类似现实世界经验的解决方案。

\n\n

假设:

\n\n
    \n
  • 假设存在一个神奇的过程,该过程授权将模块拉入内部网络进行分发。
  • \n
  • 并不是说 Anaconda 可以\xe2\x80\x99t 成为答案的一部分,只需确保解决如何解决在那里找不到的 PyPi.org 包的问题。
  • \n
\n\n

澄清:

\n\n
    \n
  • 允许使用 Docker 容器。
  • \n
\n

python

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

无法将 postgresql_db 模块与 ansible 一起使用

目标服务器:

-bash-4.2$ python -V
Python 2.7.5
-bash-4.2$ pip list | grep psycopg2
psycopg2 (2.8.3)
Run Code Online (Sandbox Code Playgroud)

但如果使用此任务运行 ansible playbook 将失败:

- name: Create repmgr database
  postgresql_db:
    name: repmgr
  become: true
  become_user: postgres
Run Code Online (Sandbox Code Playgroud)

错误:

TASK [db : Create repmgr database] ***************************************************************************
fatal: [192.168.0.1]: FAILED! => {"changed": false, "msg": "Failed to import the required Python library (psycopg2) on db's Python /usr/bin/python. Please read module documentation and install in the appropriate location. If the required library is installed, but Ansible is using the wrong Python …
Run Code Online (Sandbox Code Playgroud)

postgresql python ansible

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

错误:无法从“11.7”确定 PostgreSQL 版本

我找到了一个 Django 项目,但未能通过以下方式使其在 Docker 容器中运行:

  1. git clone https://github.com/hotdogee/django-blast.git

我有以下 Dockerfile:

FROM python:2
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
Run Code Online (Sandbox Code Playgroud)

对于docker-compose.yml我来说:

version: "3"

services:
  db:
    image: postgres
    volumes:
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
Run Code Online (Sandbox Code Playgroud)

接下来,我遇到了这个错误:

$ docker-compose build
...
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python -c 'import …
Run Code Online (Sandbox Code Playgroud)

postgresql python django docker-compose

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

Docker Compose 端口未暴露?

我有一个简单的基于 Python 的 Web 服务器,在使用 docker compose 设置的容器中运行,该容器公开端口 8080。

\n

当我 docker-compose up 服务时,它报告端口已公开,但端口未向外部公开。

\n

接下来我应该看什么诊断?

\n

这是一个典型的运行

\n
\xe2\x9e\x9c  demo04 sudo docker-compose up -d\nRecreating leagueweb_database ... done\nRecreating leagueweb_server   ... done\n
Run Code Online (Sandbox Code Playgroud)\n

Python Web 服务器(使用 CherryPy)报告它已正常启动并打开端口 8080。

\n
leagueweb_server | [25/Jan/2022:11:27:21] ENGINE Serving on http://127.0.0.1:8080\n
Run Code Online (Sandbox Code Playgroud)\n

Docker 报告它正在转发端口 8080

\n
\xe2\x9e\x9c  demo04 sudo docker-compose ps\n       Name                     Command                  State                              Ports\n------------------------------------------------------------------------------------------------------------------------\nleagueweb_database   /entrypoint.sh mysqld            Up (healthy)   0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp\nleagueweb_server     ./wait-for-it.sh database: ...   Up             0.0.0.0:8080->8080/tcp,:::8080->8080/tcp\n
Run Code Online (Sandbox Code Playgroud)\n

从远程 PC 进行测试,我可以看到虽然端口 3306 是外部开放的,但端口 8080 却没有。

\n
PS …
Run Code Online (Sandbox Code Playgroud)

python cherrypy docker docker-compose

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

如何选择 Python 版本在 Gentoo 中安装

我正在使用 Gentoo Linux 并且我想安装 Python2.5 但有一个问题。

该命令emerge -av python输出以下内容,

    These are the packages that would be merged, in order:

    Calculating dependencies... done!
    [ebuild     U ] dev-lang/python-3.1.2-r3 [3.1.1-r1] USE="gdbm ipv6 ncurses readline ssl threads (wide-unicode%*) xml -build -doc -examples -sqlite* -tk -wininst (-ucs2%)" 9,558 kB
    [ebuild     U ] app-admin/python-updater-0.8 [0.7] 8 kB
Run Code Online (Sandbox Code Playgroud)

还有更多版本的 ebuild:

    # ls /usr/portage/dev-lang/python
    ChangeLog  
    files  
    Manifest  
    metadata.xml  
    python-2.4.6.ebuild  
    python-2.5.4-r4.ebuild  
    python-2.6.4-r1.ebuild  
    python-2.6.5-r2.ebuild  
    python-3.1.2-r3.ebuild
Run Code Online (Sandbox Code Playgroud)

如何选择我想要的ebuild?(python-2.5.4-r4)

更新

@Ophidianemerge -av =python-2.5.4-r4工作..谢谢

linux package-management python gentoo

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

为什么这个 Python 进程在我的 Mac OS X 服务器上运行?

有什么办法可以看到是什么开始了这个过程,为什么?

$ ps -e

  PID TTY           TIME CMD
  ...
   41 ??         0:00.55 /System/Library/Frameworks/Python.framework/Versions/2.5/Resources/Python.
Run Code Online (Sandbox Code Playgroud)

mac python mac-osx-server

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

在 redhat 5 上构建 Python 3.2.3:缺少 _posixsubprocess

我正在尝试在 RHEL 5.7 机器上构建 Python3,我成功地构建了 Python 3.2.2,使用:

# Install required build dependencies
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

# Fetch and extract source. Please refer to http://www.python.org/download/releases
# to ensure the latest source is used.
wget http://www.python.org/ftp/python/3.2/Python-3.2.tar.bz2
tar -xjf Python-3.2.tar.bz2
cd Python-3.2

# Configure the build with a prefix (install dir) of /opt/python3, compile, and install.
./configure --prefix=/opt/python3
make
Run Code Online (Sandbox Code Playgroud)

但是我在使用 Python 3.2.3 时失败了(?):

Failed to build these modules:
_posixsubprocess     
Run Code Online (Sandbox Code Playgroud)

这是一个应该困扰我的问题吗?我如何构建它?我找到了这个补丁,但它没有包含在我从网站上获得的 Python 3.2.3 源中......

这是 stderr 的输出: …

redhat python

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

在 Apache 服务器上通过 cgi 启动根级进程的最安全方法是什么?

问题:我有一个脚本,它以 root 身份通过 cron 作业定期运行,但我想给人们一种通过网页异步启动它的方法。(将编写脚本以确保它不会运行重叠实例等。)

我不需要用户登录或拥有帐户,他们只需单击一个按钮,如果脚本准备好运行,它就会运行。用户可以为脚本选择参数(作为输入进行了大量过滤),但为简单起见,我们会说他们只有选择按下的按钮。

作为一个简单的测试,我在 cgi-bin 中创建了一个 Python 脚本。chown-ing 到 root:root 然后对它应用 "chmod ug+" 没有得到预期的结果:它仍然认为它具有网络服务器帐户的有效组......据我所知,这不是允许。

我读到用编译的 cgi 程序包装它可以完成这项工作,所以我创建了一个 C 包装器来调用我的脚本(它的权限恢复到正常)并给可执行文件根权限和 setuid 位。行得通……脚本运行起来就像 root 运行它一样。

我的主要问题是,这是否正常(需要二进制包装器来完成工作),这是安全的方法吗?它不是面向世界的,但我仍然想学习最佳实践。

更广泛地说,我经常想知道为什么编译后的二进制文件在实践中比脚本更“可信”?我认为你会信任一个人类可读的文件,而不是一个神秘的二进制文件。如果攻击者可以编辑文件,那么您就已经有麻烦了,如果是您无法轻松检查的文件,则更是如此。简而言之,我希望它在此基础上反过来。你的意见?

python root setuid cgi apache-2.2

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

HP BladeSystem c3000 机箱:Ilo:Python:get_asset_tag() 不工作

我尝试使用 Python 的 HP-ILO 模块连接到 HP 刀片服务器(HP BladeSystem c3000 Enclosure)。

obj=hpilo.Ilo('172.8.2.29', login='Administrator', password='<redacted>', timeout=60, port=443, protocol=None, delayed=False)
Run Code Online (Sandbox Code Playgroud)

使用 python 库创建了一个 HP-ILO 对象并尝试获取资产标签详细信息,但出现以下错误。

hpilo.IloError:远程返回虚假数据,可能不是 iLO

Python API:https : //pythonhosted.org/python-hpilo/ilo.html

我也可以通过浏览器和 ssh 客户端连接服务器,但我无法通过 RIBCL 脚本或使用 python 连接服务器。

python hp ilo hp-proliant blade-server

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

为 ssh 存储密码的最佳实践

我有一个运行某些脚本的 Ubuntu 服务器,应该通过 ssh 进入 Windows 服务器来执行数据。我正在使用 python 进行开发,并使用 paramiko 进行 ssh。

目前,windows 登录 ssh 密码以纯文本形式提供。

有什么好方法可以存储/检索密码,以便如果有人阅读代码,他们就无法轻松获取密码?

linux windows ssh password python

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