我正在编写一个简单的脚本,该脚本可以重新启动hadoop从属服务器。在脚本中,我必须以root用户身份进行一些初始更改。之后,我必须更改为用户“
hadoop”并执行命令集。我使用os.system运行命令,但是我怀疑它是否运行良好。例如:
uid=pwd.getpwnam('hadoop')[2]
os.setuid(uid)
os.system('whoami')
os.chdir('/home/hadoop/hadoop/')
os.system('bin/hadoop-daemon.sh stop tasktracker')
再一次,我必须以root用户身份执行一些命令,然后再次成为用户“ hadoop”并执行:
os.system('bin/hadoop-daemon.sh stop tasktracker')
我在这里有三个问题,
os.system是我可以用来发出linux命令的最佳命令吗?
我可以通过上面的命令从root用户更改为hadoop用户,但无法更改为root用户(我知道如果他们允许的话,将会出现安全问题,我想知道这样做是否有可能,至少要通过密码)?
os.setuid()是否起作用?whoami打印用户hadoop,但使用这些命令不会停止进程“ tasktracker”,但是,如果我手动执行相同的命令,它将运行良好(我在手动尝试时使用“ su hadoop”而不是setuid)。
感谢你的帮助。
您可以使用:
os.system('sudo -u hadoop bin/hadoop-daemon.sh stop tasktracker')
或者如果您没有sudo但有su
os.system('su hadoop -c "bin/hadoop-daemon.sh stop tasktracker"')
问题内容: 我有个问题。我正在编写一个软件,该软件需要执行要求用户处于sudo模式的操作。运行’sudo python filename.py’不是一个选项,这使我想到了我的问题。有没有一种方法可以在python脚本中途更改为sudo,安全性不是问题,因为用户将知道程序应以以下方式运行以说明问题的sudo密码 以普通用户身份运行的程序 ......执行操作 用户输入sudo密码 用户更改为sudo
问题内容: 我想使用以下网址打开网址: 我不断收到以下错误: 我知道该错误是由于该网站不允许python访问该网站,阻止僵尸程序浪费其网络资源而引起的,这是可以理解的。我去搜索,发现您需要更改urllib的用户代理。但是,我针对此问题找到的有关如何更改用户代理的所有指南和解决方案均已使用urllib2,并且我使用的是python 3,因此所有解决方案均不起作用。 如何使用python 3解决此问题
-----------编辑代码到当前状态------------------------- 在这整个过程中,对于如何获取/设置用户密码并为安全目的对密码进行散列,有什么建议吗?对于电子邮件,我想我可以强制它使用HTTPS,这就足够了,但是我希望保护到传递new_password的服务器的连接。
问题内容: 是否可以更改导入的python文件的名称? 在我在Django的views.py中,我有 在我的模型中,我有一个客户端模型,但是当我使用该文件时,我导入了客户端,但是在我的客户端模型中出现了AttributeError … 我的问题是,是否可以更改in的名称? 谁能对我的情况有个想法? 提前致谢 … 问题答案: 是的,您可以使用关键字。 正是出于这个目的。此处的文档对此进行了说明: h
有没有其他方法使文件成为只读的?
问题内容: 听起来这是一个简单的问题,但是我找不到在python中用matplotlib制作的图中更改字体(不是字体大小)的有效解决方案。 我找到了一些教程,可通过修改matplotlib存储默认字体的文件夹中的一些文件来更改matplotlib的默认字体- 请参阅此博客文章-但我正在寻找一种不太激进的解决方案,因为我想使用多个我的绘图中的字体(文本,标签,轴标签等)。 问题答案: 假设您要使用C