正如标题所说。 如果我运行yum更新(这是一个CentOS框),碰巧有一个Python更新。 如果其他用户运行Python程序,会发生什么情况。 我是否需要提醒他们重新启动程序? 或者,如果他们喜欢,他们能否继续安全地继续运行这些程序? 问一个问题:旧的Python版本是否保留在系统(硬盘)上,只要有一些进程仍然打开。 或者更新是否立即覆盖现有的Python安装/二进制文件? 所以现有的进程只能继续运行,因为Python解释器被完全加载到内存中?
问题 有没有更安全/更好的方式来通过Python脚本非交互式地设置用户的密码? 我目前的解决scheme使用Fabric脚本中的chpasswd 。 另一个select是从Fabric脚本中使用Pexpect 。 我目前设置密码的方法是否是安全问题? 我所看到的潜在安全问题是,我的本地terminal上的密码显示为明文,如下所示: [xxx.xx.xx.xxx] run: echo "johnsmith:supersecretpassw0rd" | chpasswd [xxx.xx.xx.xxx] run: echo "johnsmith:supersecretpassw0rd" | chpasswd 。 由于我只用我的笔记本电脑运行Fabric脚本,我不认为这是一个安全问题,但我对其他人的input感兴趣。 背景 我已经使用Fabric创build了一个Python脚本来configuration新build的Slicehost Ubuntu切片。 如果您不熟悉Fabric,则使用Python SSH2客户端Paramiko为应用程序部署或系统pipe理任务提供远程访问。 我使用Fabric脚本的第一件事就是创build一个新的pipe理员用户并设置他们的密码。 与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 […]
我打算使用单个VPS将多个低stream量CherryPy应用程序部署为子目录; 例如: example.com/app1等 在研究WSGI部署之后,看起来部署应用程序的首选方法是在反向代理设置中使用WSGI服务器(Gunicorn,uWSGI等)和NGinx。 看起来使用两个networking服务器似乎有点过分 – 尤其是因为我的CherryPy应用程序本身就是一个networking服务器 – 但我不想随意地将这个想法解雇。 我当然不是专家,所以我想讨论一下。 我看到三个选项: 自己部署CherryPy。 部署在Gunicorn或其他WSGI服务器下。 部署在WSGI服务器之下,并反向代理到NGinx,这似乎是每个人的解决scheme。 我的问题: 我到处看到这种模式的主要原因是什么? NGinx是不是很好? 对于低stream量的应用程序,本地CherryPy服务器是否足够好,还是我应该不尝试? 任何和所有的build议表示赞赏,谢谢。
我一直在使用bash来处理大部分系统pipe理任务。 我也知道一点perl。 我应该学习Python还是Perl更适合系统自动化。 从我的经验来看,学习perl很简单。
我使用uWSGI和nginx在CentOS服务器上运行Python金字塔应用程序。 我使用SQLAlchemy作为ORM,MySQLdb作为API,MySQL作为数据库。 该网站还没有活着,所以唯一的交通是我和公司的其他员工。 我们购买了一些数据来填充数据库,所以最大的(也是最经常查询的)表是大约150,000行。 昨天我迅速连续打开了网站的四个新标签,并且收到了一些502错误的网关错误。 我查看了uWSGI日志,发现如下: sqlalchemy.exc.OperationalError: (OperationalError) (2006, 'MySQL server has gone away') 'SELECT ge… 重要提示:这个错误不是由于MySQL的wait_timeout造成的。 去过也做过。 我想知道这个问题是否是由同时服务的并发请求造成的。 我使自己成为一个穷人的负载testing仪: for i in {1..10}; do (curl -o /dev/null http://domain.com &); done; 果然,在这十个请求中,至less有一个会抛出2006年的错误,时常更多。 有时错误会变得更加陌生,例如: sqlalchemy.exc.NoSuchColumnError: "Could not locate column in row for column 'table.id'" 当列最肯定存在和工作正常所有其他相同的请求。 或者,这个: sqlalchemy.exc.ResourceClosedError: This result object does not return rows. It has […]
我有一个运行在CherryPy服务器上的Python Web应用程序,它作为一个Windows服务运行。 我有一个batch file来部署此应用程序,但我仍然不得不远程桌面到服务器重新启动服务。 有什么方法来编写脚本吗? 我试过了: psexec \\server "net restart cherrypyservice" 但是这似乎不起作用。
我有一个用Python编写的备份脚本,在将源目录复制到目录之前创build目标目录。 我已经configuration它使用/external-backup作为目的地,这是我安装一个外部硬盘驱动器。 我刚刚运行了脚本,没有打开(或挂载)硬盘驱动器,发现它正常工作,虽然在内部硬盘上做了一个备份,但是没有足够的空间来备份。 我的问题是:如何在写入之前检查音量是否安装在正确的位置? 如果我可以检测到/external-backup没有挂载,我可以防止写入。 额外的问题是,为什么这是允许的,当操作系统知道该目录应该存在于另一台设备上时,我应该在后面安装该设备(外部硬盘驱动器)的数据(在内部硬盘驱动器上)会发生什么? 很明显,不同的设备在同一条path上不能有两个副本! 提前致谢!
我们在CentOS 5.7服务器上安装了FreeRADIUS 2 deamon。 我们希望使用预先编写的Python模块来进行授权,但有一个问题:我们所得到的Python模块需要Python 2.6或更高版本,但与CentOS一起安装的Python是Python 2.4 。 现在,服务器pipe理员已经将Python 2.6安装在单独的文件夹/usr/lib/Python2.6所以我们可以从那里运行Python 2.6。 但是, /usr/bin/python仍然是Python 2.4。 显然,replace默认的Python 2.4会导致各种问题。 有什么办法可以强制FreeRADIUS使用/usr/lib/Python2.6而不是默认的2.4来定位和运行模块?
我想在我的本地ubuntu机器上使用django应用程序。 然而,该网站不工作,我的/var/log/apache2/errors.log充满了这样的消息: ImportError: No module named site 我的/var/log/apache2/error.log (今天)看起来像这样: $ cat error.log | uniq -c 1 [Wed Jun 29 09:37:37 2011] [notice] Apache/2.2.17 (Ubuntu) mod_wsgi/3.3 Python/2.7.1+ configured — resuming normal operations 12966 ImportError: No module named site 这是通知,它启动时,我打开我的机器,其次是12,966行都说no module named site消息 注意缺lessdate时间字段。 即使不进入网站(即使不进行networking请求),也会重复这些错误。 在浏览器中访问网站时,它只是挂起,仿佛在等待大量下载。 设置 Apache模块 我正在使用一个python 2.5 virtualenv与很多包(包括Django的1.1)与点安装。 我有mod_wsgi加载: $ ls -l /etc/apache2/mods-enabled/wsgi* lrwxrwxrwx […]
创buildPython服务来查询AD属性 我正在使用基于SASL的Python-LDAP(DIGEST-MD5)在Linux上将我们的AD与运行Python的Web服务集成以查询AD 2012用户属性(部门,部门,电话扩展,电子邮件等)。 在针对我的AD 2003的服务制定了特定的扭结之后,我开始遇到一个针对我们的新AD 2012的SPN错误,即digest-uri与服务器上的任何SPN都不匹配。 我交叉引用了两个服务器的SPN列表,它们包含相同的相似的类似物。 错误:digest-uri与为此服务器注册的任何LDAP SPN不匹配 修正? 这是通过运行修复的: setspn -A ldap/<Domain_Name> <Computer_Name> 请注意,即使运行以下命令,创build服务帐户也不能修复我的SPN错误: setspn -A ldap/<Domain_Name> <Domain_Name>/<Service_Account_Name> simple_bind_s()不需要SPN,sasl_interactive_bind_s()需要SPN 只有使用sasl_interactive_bind_s()将SPN添加到本地计算机SPN列表才能用于我的Python-LDAP服务。 我还应该注意,如果使用simple_bind_s(),则可以跳过SPN步骤,但是此方法以明文forms发送凭据,这是不可接受的。 但是我注意到,这个logging在消失之前只停留在SPN列表上一分钟左右? 当我运行setspn命令时,没有错误,事件日志完全是空的,没有重复的地方,使用基本dn上的-F森林范围的search进行检查,没有任何东西。 我已经添加并尝试重新添加和删除,并将SPN从对象移到对象,以validation它没有隐藏到任何地方,但第二次我将对象添加到任何地方,然后尝试重新添加它通知我的重复。 所以我非常有信心,没有重复隐藏的地方。 黑客 现在我已经有一个计划的任务重新运行命令,以保持在列表上的logging,所以我的服务将适当地命名为“SPN黑客” cmd.exe /C "setspn -A ldap/<Domain_Name> <Computer_Name>" 直到我可以找出为什么SPN正在被清除。 我不是这个特定AD的主要pipe理员,pipe理员可以运行一个服务来同步AD上的另一个服务的SPN,而不知道它吗? 我的标题是Web Developer,而不是借口,而是解释我对Active Directory事务的无知。 我被告知要将AD作为主用户数据库,而且我一直在阅读很多内容,但是我无法find任何人在SPN被定期“覆盖”或“清理”时遇到问题的地方,pipe理员非常熟悉SQLServer条目之外的SPN。 为什么我需要黑客? 到目前为止,我的黑客似乎没有为任何用户或服务造成任何问题,并没有产生任何错误,所以pipe理员说,他会让它运行,我会继续寻找。 但后来我发现自己处于编写一个服务的岌岌可危的境地,这个服务的实现基本上是一个cron hack / shiver …因此,任何帮助将不胜感激。 更新 在与系统pipe理员对话之后,他同意在黑客之上build立一个服务并不是一个解决scheme,因此他允许我启动一个本地服务,并使用我可以用于我的目的的端点encryption,结果是一样的。 我会留意是什么导致SPN清除。 本地绑定不是使用Python-LDAP的问题,本地服务在一个小时左右就已经启动并运行了。 不幸的是,我基本上是将包含LDAP的function封装起来,但是我们只能做我们必须做的事情。