当前位置: 首页 > 面试题库 >

如何通过python脚本在Linux中设置用户密码?

梁丘亦
2023-03-14
问题内容

我正在尝试自动进行SFTP访问的设置。该脚本以具有sudo权限且没有密码的用户身份运行。

我可以这样创建一个用户:

>>> import subprocess
>>> process = subprocess.Popen(['sudo', 'useradd', 'test'], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> process.communicate()
('', '')

接下来,我需要设置用户的密码,但是我不知道怎么做。这是我尝试过的。

>>> process = subprocess.Popen(['sudo', 'chpasswd'], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> process.communicate('test:password')

在我的python程序中,它没有任何作用,在交互式解释器中,它在第一行之后锁定。

最好的方法是什么?

我在Ubuntu lucid上运行python 2.6。


问题答案:

的文档communicate说,stdin=PIPE如果要通过communicate参数将数据发送到标准输入,则需要添加

http://docs.python.org/release/2.6/library/subprocess.html#subprocess.Popen.communicate

我很欣赏这只是基本代码,但是如果有使用的话,这里还有另外两个小注释:

  • 如果您对useradd命令的输出是否感兴趣,而不是是否失败,则最好使用subprocess.check_call它,如果命令返回非零值,它将引发异常。
  • 在第二种情况下,您应process.returncode在致电后检查是否为0communicate('test:password')


 类似资料:
  • 我试图通过python使用boto3库为SNS主题设置Platfrom应用程序属性。 以下是脚本片段 下面是我得到的错误。aws文档没有python的例子,也没什么帮助。我不确定我错过了什么。请帮帮忙 AWS文档供参考:https://docs . AWS . Amazon . com/SNS/latest/API/API _ setplatformapplicationattributes .

  • 问题内容: 我知道如何在/ etc / profile和环境变量中进行设置。 但是,如果我想在脚本中进行设置怎么办?是导入os,sys吗?我该怎么做? 问题答案: 您没有设置,而是向中添加条目。这是应该在其中搜索Python软件包的目录列表,因此您只需将目录追加到该列表即可。 实际上,是通过分割路径分隔符上的值来初始化的(在类似Linux的系统上,在Windows上)。 您也可以使用来添加目录,该

  • 问题内容: 如何通过PHP脚本设置cron作业。 问题答案: 这将添加一个每天上午9:30运行的脚本。 如果从Web服务器运行此脚本,可能会遇到权限问题。为了解决这个问题,我建议使用另一种方法。 这是一种可能的解决方案。创建需要运行的脚本列表。您可以将其保存在文本文件或数据库中。创建一个脚本来读取此列表,并每分钟或每5分钟(使用cronjob)运行它。您的脚本将需要足够聪明,以决定何时运行脚本列表

  • 问题内容: 我正在将csh脚本转换为python脚本。该脚本调用一个占用大量内存的可执行文件,该文件需要非常大的堆栈,因此csh脚本将stacksize设置为无限制: 当我尝试在python中重现此脚本时,我会使用,以非常幼稚的方式执行它们,例如: 但是我不知道如何告诉操作系统以不受限制的堆栈大小运行这些可执行文件。有没有办法为python脚本中的调用指定stacksize?我应该使用一些底层系统

  • 问题内容: 我正在尝试设置脚本以增加Xcode项目的内部版本号。我进行了一次API调用以获取当前的内部版本号,然后我希望对其进行递增,然后将该新的版本号用作环境变量,以便Xcode插件可以使用它。 我安装了EnvInject插件,但是我不知道如何将var从我的shell脚本中获取到环境变量中。 这设置为我需要的值,但是如何将其分配给环境变量,以便以后在工作中访问它? 问题答案: 添加一个构建步骤以

  • 问题内容: 我有一些需要环境变量的仪器,我想从python代码中自动设置。所以我尝试了几种方法来实现它,但是没有一个成功。这里有些例子: 我在我的python脚本中插入以下代码 os.system(“export ENV_VAR=/some_path”) 我创建了bash脚本(env.sh)并从python运行它: export ENV_VAR=some_path os.system(“sourc