因此,我正在尝试使用子进程从python脚本中以超级用户身份运行进程.在ipython shell中就像是
proc = subprocess.Popen('sudo apach2ctl restart',
shell=True, stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)
工作正常,但一旦我把它插入脚本,我开始得到:sudo: apach2ctl: command not found
.
我猜这是由于sudo在ubuntu上处理环境的方式.(我也尝试sudo -E apche2ctl restart
和sudo env path=$PATH apache2ctl restart
与无济于事)
所以我的问题基本上是,如果我想以apache2ctl restart
超级用户身份运行,在需要时提示用户输入超级用户密码,我应该怎么做呢?我无意在脚本中存储密码.
编辑:
我已经尝试将命令作为字符串传递并标记为列表.在python解释器中,使用字符串我将正确地获得密码提示(仍然不像我原来的问题那样在python脚本中工作),列表只是给出了sudo的帮助屏幕.
编辑2:
所以我收集的是,当shell = True时,Popen将使用一些命令作为字符串,这需要
proc = subprocess.Popen(['sudo','/usr/sbin/apache2ctl','restart'])
Run Code Online (Sandbox Code Playgroud)
没有'shell = True'让sudo工作.
谢谢!
如何让emacs告诉我它加载的.emacs文件的位置?
我的情况就是当我这样做时sudo emacs
,它会加载一个与我的主目录中的文件截然不同的.emacs文件.我可以通过M-x eval-buffer
自己的.emacs文件来解决这个问题,但这是一个额外的步骤,而且它似乎无法清除任何.emacs文件正在加载的傻瓜绑定.如果有的话,我只想找到.emacs文件并删除一些陌生人的绑定(cn,cp,ca全部反弹到奇怪的东西)
我的主要问题仍然是,如何让emacs告诉我它加载的.emacs文件的位置?
我知道python -c '<code>'
,但我想知道是否有更优雅的python相当于perl -pi -e '<code>'
.我仍然在整个目录(perl -pi -e s/foo/bar/g *
甚至find . | xargs perl -pi -e s/foo/bar/g
是子目录)中查找和替换它等相当多的东西.
我实际上觉得Perl Perl(自由形式Tim Toady-ness)使得perl -pi -e
工作如此出色,而使用Python你必须做一些导入re模块,创建re实例然后捕获的东西stdin,但也许有一个Python快捷方式可以完成所有这些并且我错过了它(非常想念它)...
我正在尝试在两个服务器之间rsync文件
rsync -avlzp /source user@server:/destination
Run Code Online (Sandbox Code Playgroud)
但相反,我得到错误说明
bash: rsync: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(635) [sender=3.0.2]
Run Code Online (Sandbox Code Playgroud)
但rsync的是安装在两台服务器上.我究竟做错了什么?我也试过了
rsync -av -e "ssh -l ssh-user" /source server:/destination
Run Code Online (Sandbox Code Playgroud)
结果相同.
我主要尝试使用rsync,以便它只复制差异,如果它们存在...
谢谢
我试图更好地理解django管理员,同时,我正在尝试向当前用户管理员添加一个字段.在models.py我做过
User.add_to_class('new_field', models.BooleanField(default=False))
Run Code Online (Sandbox Code Playgroud)
在admin.py中我有以下内容(字段集基本上只是从django/contrib/auth/admin.py复制)
class AdjUserAdmin(UserAdmin):
list_display = UserAdmin.list_display + ('new_field',)
list_filter = UserAdmin.list_filter + ('new_field',)
fieldsets = UserAdmin.fieldsets
fieldsets[1][1]['fields'] = ('first_name','last_name','email','new_field')
Run Code Online (Sandbox Code Playgroud)
问题是,当我这样做时,我得到错误:
AdjUserAdmin.fieldsets[4][1]['fields']' refers to field 'new_field' that is missing from the form.
我看过UserChangeForm,但看起来它已经正确地将User作为模型.我不确定new_field
表格中缺少原因.
谢谢
关于这是臭臭的代码
我知道这是一个臭臭的猴子修补方式去做这个,但是子类化给我的问题主要是出于这些原因..如果我能按照上面说明的方式让它工作,我会很开心..也许很臭.
关于推荐的方式
我所知道的创建用户配置文件的推荐方式,只是在特定情况下,我看不到的优点创造一个全新的表,具有附加调用数据库的时候我要的存储是一个额外的一些信息,如is_private
某些信息.如果我存储更多信息,那么我同意,建立用户配置文件更可取.
当我在框架中调试代码时,它通常会在实际访问我想要调查的文件之前在不同的文件中进行一系列不同的调用.有没有办法在我启动geben时打开我想要的文件,将断点放在该文件中然后告诉geben运行(按g)?
否则我必须继续踩到/直到geben最终得到我想要的文件,然后我可以转到我想要的行并设置断点.
在Linux环境中使用Emacs 25,我经常使用鼠标复制文本,并希望我可以在Emacs中使用某些命令粘贴复制的文本,但目前我所知道的唯一方法是通过鼠标中键单击鼠标 - 猛拉原色.
我试图将它绑定到一个键命令,同时将mouse-yank-at-point设置为true,但这(我怀疑)需要鼠标事件才能正常工作,我不知道如何让Emacs进入相信由于击键导致鼠标事件发生.
有人有主意吗?或者只是知道从PRIMARY选择中用键盘猛拉的正确方法?
所以我知道ftplib,但这对我来说有点太低了,因为它仍然需要我一次处理一个上传文件以及确定是否有子目录,在服务器上创建等效的子目录,cd到这些子目录然后最终将正确的文件上传到这些子目录中.这是一项烦人的任务,如果可以,我宁愿避免,编写测试,设置测试ftp服务器等等.
你们中的任何人都知道一个图书馆(或者在卫生间的墙上潦草地写了一些代码......),这对我来说要处理这个问题,还是我应该接受我的命运并自己动手?
谢谢
是否可以在ruby中创建排除一个或两个端点的范围.那么处理开放和封闭区间边界的数学概念?
例如,我可以定义1.0到10.0之间的范围,不包括1.0
说(假伪红宝石)
range = [1.0...10.0)
range === 1.0
=> false
range === 10.0
=> true
Run Code Online (Sandbox Code Playgroud) 我希望能够在Django管理员中按用户名搜索用户个人资料.从本质上讲,在admin.py中,我会做的事情如下:
class UserProfileAdmin(admin.ModelAdmin):
search_fields = ['username']
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为user
在我通常的用户配置文件设置中是一个外键.
有没有一种快速的方法来实现这一点,而无需在username
我的UserProfile模型中添加字段?
emacs ×3
python ×3
django ×2
django-admin ×2
command-line ×1
dot-emacs ×1
ftp ×1
geben ×1
perl ×1
rsync ×1
ruby ×1
subprocess ×1
sudo ×1
x11 ×1
xorg ×1