标签: python

如何使用脚本远程重启 Windows 服务?

我有一个在 CherryPy 服务器中运行的 Python Web 应用程序,它作为 Windows 服务运行。我有一个批处理文件来部署这个应用程序,但我仍然需要远程桌面到服务器才能重新启动服务。有没有办法编写这个脚本?

我试过:

psexec \\server "net restart cherrypyservice"
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。

windows-server-2003 windows-service python pstools

7
推荐指数
3
解决办法
3万
查看次数

通过 Python 脚本/非交互方​​式更改用户密码的安全方法

问题

  1. 是否有更安全/更好的方式通过 Python 脚本以非交互方式设置用户密码?我目前的解决方案采用chpasswd面料脚本。另一种选择是在Fabric脚本中使用Pexpect
  2. 我目前设置密码的方法是否存在安全问题?潜在的安全问题,我看到的是,密码显示为明文我的本地终端上进行如下:
    [xxx.xx.xx.xxx] run: echo "johnsmith:supersecretpassw0rd" | chpasswd
    由于我只从笔记本电脑运行Fabric脚本,因此我认为这不是安全问题,但我对其他人的输入感兴趣。

背景

我已经使用Fabric创建了一个 Python 脚本来配置一个新构建的Slicehost Ubuntu 切片。如果您不熟悉 Fabric,它会使用Python SSH2 客户端Paramiko来提供“用于应用程序部署或系统管理任务”的远程访问。

我让Fabric脚本做的第一件事就是创建一个新的管理员用户并设置他们的密码。与Pexpect不同,Fabric 无法处理远程系统上的交互式命令,因此我需要以非交互式方式设置用户密码。目前,我正在使用该chpasswd命令,该命令以明文形式读取用户名和密码。

当前代码

# Fabric imports and host configuration excluded for brevity
root_password = getpass.getpass("Root's password given by SliceManager: ")
admin_username = prompt("Enter a username for the admin user to create: ")
admin_password = getpass.getpass("Enter …
Run Code Online (Sandbox Code Playgroud)

automation scripting python fabric

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

Django + gunicorn + virtualenv + Supervisord 问题

我的 virtualenv + gunicorn 设置有一个奇怪的问题,只有当 gunicorn 通过 supervisord 启动时。我确实意识到这很可能是我的主管的问题,我将不胜感激任何有关寻求帮助的更好地方的反馈...

简而言之:当我从我的用户 shell 运行 gunicorn 时,在我的 virtualenv 中,一切都完美无缺。我能够访问我的 Django 项目的所有视图。

当系统启动时supervisord启动gunicorn时,一切正常。

但是,如果我必须终止 gunicorn_django 进程,或者如果我执行 supervisord 重新启动,一旦 gunicorn_django 重新启动,每个请求都会用奇怪的 Traceback 回答:

(...)
  File "/home/hc/prod/venv/lib/python2.6/site-packages/Django-1.2.5-py2.6.egg/django/db/__init__.py", line 77, in
    connection = connections[DEFAULT_DB_ALIAS]
  File "/home/hc/prod/venv/lib/python2.6/site-packages/Django-1.2.5-py2.6.egg/django/db/utils.py", line 92, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/home/hc/prod/venv/lib/python2.6/site-packages/Django-1.2.5-py2.6.egg/django/db/utils.py", line 50, in load_backend
    raise ImproperlyConfigured(error_msg)
TemplateSyntaxError: Caught ImproperlyConfigured while rendering: 'django.db.backends.postgresql_psycopg2' isn't an available database backend.
Try using django.db.backends.XXX, where XXX is one of:
    'dummy', 'mysql', 'oracle', 'postgresql', 'postgresql_psycopg2', 'sqlite3'
Error …
Run Code Online (Sandbox Code Playgroud)

python django virtualenv supervisord gunicorn

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

uWSGI 无法使用 Flask 和 Virtualenv 找到“应用程序”

使用 uWSGI 来提供一个简单的 wsgi 应用程序(一个简单的“Hello, World”)我的配置有效,但是当我尝试运行一个 Flask 应用程序时,我在 uWSGI 的错误日志中得到了这个:

current working directory: /opt/python-env/coefficient/lib/python2.6/site-packages
writing pidfile to /var/run/uwsgi.pid
detected binary path: /opt/uwsgi/uwsgi
setuid() to 497
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
uwsgi socket 0 bound to TCP address 127.0.0.1:3031 fd 3
Python version: 2.6.6 (r266:84292, Jun 18 2012, 14:18:47)  [GCC 4.4.6 20110731 (Red Hat 4.4.6-3)]
Set PythonHome to /opt/python-env/coefficient/
*** Python threads support is disabled. You can enable …
Run Code Online (Sandbox Code Playgroud)

python wsgi uwsgi

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

导入错误:没有名为烧瓶的模块 - uwsgi 和 buildout

uWSGI 配置:

<uwsgi>
    <module>app_wsgi:app</module>
    <pythonpath>./src</pythonpath>
    <socket>/tmp/uwsgi.sock</socket>
    <pidfile>/tmp/uwsgi.pid</pidfile>
    <daemonize>uwsgi.log</daemonize>
</uwsgi>
Run Code Online (Sandbox Code Playgroud)

配置文件

[buildout]
parts = eggs uwsgi
versions = versions
include-site-packages = false

[eggs]
recipe: zc.recipe.egg:eggs
eggs =
    flask

[versions]
flask = 0.9

[uwsgi]
recipe: buildout.recipe.uwsgi
version = 1.4.3
Run Code Online (Sandbox Code Playgroud)

例外:

*** Operational MODE: single process ***
added ./src/ to pythonpath.
Traceback (most recent call last):
  File "./src/app_wsgi.py", line 1, in <module>
    from app import create_app
  File "./src/app.py", line 1, in <module>
    from flask import Flask, request
ImportError: No module named flask
unable …
Run Code Online (Sandbox Code Playgroud)

python uwsgi

7
推荐指数
0
解决办法
1439
查看次数

在 yum 更新期间,Python 安装会更新。我需要重新启动正在运行的程序吗?

正如标题所说。如果我运行 yum update(它是一个 CentOS 机器)并且恰好有一个 Python 更新。如果其他用户运行 Python 程序会发生什么。我需要提醒他们重新启动程序吗?或者,如果他们愿意,他们可以基本上无限期地安全地继续运行这些程序吗?

换个方式问:只要有一些进程仍然打开,旧的 Python 版本是否会保留在系统(硬盘驱动器)上。还是更新会立即覆盖现有的 Python 安装/二进制文件?那么现有的进程继续运行只是因为 Python 解释器完全加载到内存中?

linux python centos yum

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

pip install 似乎忽略了依赖链接

我有一个依赖于多个包的 Python 应用程序。不幸的是,其中一个包不在 PyPi 中,所以我必须直接从 git 存储库安装它。

我一直在尝试将它添加到我的 setup.py 中,如下所示:

setup(
..,
..,
dependency_links = [
                 'https://github.com/marcuz/libpynexmo.git#egg=nexmomessage'
    ],
install_requires=[
    ..,
    'nexmomessage'
],
packages=['localpackage']
Run Code Online (Sandbox Code Playgroud)

但是它失败了:根本没有找到 nexmomessage 的发行版

我看到它在哪里创建依赖链接列表:将dependency_links 写入common.egg-info/dependency_links.txt - 当我查看该文件时,URL 是正确的。

如果我在命令行运行它: pip install -e git+ https://github.com/marcuz/libpynexmo.git#egg=nexmomessage

它安装没有问题。

想法?

python pip

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

从网络连接读取时进程无限期挂起

对以下内容的更新:

我在不同数据中心的 Debian 虚拟机上的不相关脚本上遇到了类似的问题。

这看起来很像这里描述的问题(就像问这个问题的人一样,我没有在服务器前配置代理)。

与以下描述的主要区别在于,当我附加到挂起的进程时,我看到的是对recvfrom而不是的调用read

$ strace -p 17527
Process 17527 attached - interrupt to quit
recvfrom(3, 
Run Code Online (Sandbox Code Playgroud)

然而,Python 并没有任何被代理的印象:

>>> import os; print os.getenv("HTTP_PROXY"), os.getenv("http_proxy")
None, None
Run Code Online (Sandbox Code Playgroud)

所以我还是很难过。可悲的是,链接的问题也没有最终答案。

(我也想知道这个问题是否相关,但 S3 似乎不太可能不尊重Connection: close标题。)


我有几个 Debian(Wheezy、x86_64)服务器都表现出以下行为:

所有服务器都有一组 cron 作业,其中包括从 S3 中提取数据。这些通常运行良好,但偶尔会ps aux显示一些小时或几天前开始的作业仍在运行,并且没有完全完成。

通过strace -p <pid>显示检查它们,在所有情况下,该进程都挂在读取命令上。比如我刚才查的一个进程的输出是:

$ strace -p 12089
Process 12089 attached - interrupt to quit
read(5, 
Run Code Online (Sandbox Code Playgroud)

检查打开的文件描述符给了我这个:

$ sudo lsof -i | grep 12089
python  12089 …
Run Code Online (Sandbox Code Playgroud)

linux python svn mac-osx

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

在构建服务器上使用缓存构建 Docker 映像?

我们有一个 Jenkins CI 服务器,它从 Git 获取我们的代码,构建它,制作一个 Docker 镜像,然后将它发送到一些生产服务器。

我们的项目主要是用 Python 编写的,所以“构建”涉及运行

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

效果很好,只是有点慢。它必须通过网络获取包,另外还必须为其中一些构建 C 库(而且“lxml”并不小!)。

在开发中,我已经成功地pip-accel用来加速这个过程。它具有相同的接口,pip但它同时缓存 Python 下载和构建的 C 代码,所以

pip-accel install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

很快。

我想为我们的生产版本这样做,但我遇到了一些障碍。

显然,pip-accel需要一个目录来存储缓存。因为我们的 CI 服务器是运行构建的地方,所以这是放置它的合乎逻辑的地方。但是该pip install命令在一个新的 Docker 容器中运行,因此它不能只访问该服务器上的公共目录。

Docker“卷”似乎是为与容器共享目录而设计的,但我们的构建发生在内部(令人惊讶)docker build,并且只docker run允许您附加卷。您不能使用docker build.

有什么我想念的吗?如何在我docker build所在的容器之外运行并与我的主机共享缓存文件夹?

deployment python build-server pip docker

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

通过虚拟环境运行 Django Python 命令的 Cron 作业不起作用

我有一个 crontab 文件,据说在加载项目虚拟环境后执行 Django 命令:

*/1 * * * * source /home/virtualenvs/mydjangoproject-venv/bin/activate && python /home/www/production/mydjangoproject/manage.py mydjangocommand
Run Code Online (Sandbox Code Playgroud)

...但它绝对没有任何作用。cron 日志输出没有特别的问题:

Mar 13 19:51:01 110 CRON[23807]: (root) CMD (source /home/virtualenvs/mydjangoproject-venv/bin/activate && python /home/www/production/mydjangoproject/manage.py mydjangocommand)
Run Code Online (Sandbox Code Playgroud)

不用说,当复制粘贴到 shell 中时,命令本身可以完美运行。

我知道它与我的 crontab 的环境变量有关,但我对这件事非常缺乏教育,而且我不知道该怎么做,尤其是当它在 python 虚拟环境下运行时。它应该使用我的用户环境变量吗?来自 virtualenv 的那些?如何实施?谢谢!

注意:如果有帮助,我的 crontab 环境变量有以下输出(当通过 crontab 将“env”导出到文件时):

HOME=/root
LOGNAME=root
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
LC_ALL=en_US.UTF-8
PWD=/root
Run Code Online (Sandbox Code Playgroud)

以及项目虚拟环境下的以下环境变量:

TERM=xterm-256color
SHELL=/bin/bash
SSH_CLIENT=x.x.x.x 53007 22
OLDPWD=/root/production/mydjangoproject
SSH_TTY=/dev/pts/0
LC_ALL=en_US.UTF-8
USER=root
VIRTUAL_ENV=/home/virtualenvs/mydjangoproject-venv
MAIL=/var/mail/root
PATH=/home/virtualenvs/mydjangoproject-
venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/root
LANG=en_US.UTF-8
PS1=(mydjangoproject-venv)${debian_chroot:+($debian_chroot)}\u@$(hostname -f):\w\$ 
SHLVL=1
HOME=/root
LS_OPTIONS=--color=auto --group-directories-first
LOGNAME=root
SSH_CONNECTION=x.x.x.x 53007 x.x.x.x 22 …
Run Code Online (Sandbox Code Playgroud)

python environment-variables django cron

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