【问题标题】:Simple script does not work with os.system简单脚本不适用于 os.system
【发布时间】:2021-07-27 08:25:55
【问题描述】:

我想在 Linux 中为用户创建和分配密码,但它给出了错误:

New password: Retype new password: Sorry, passwords do not match

这里是脚本(用root执行):

from os import system
system('useradd user')
system('echo -e "pass\npass\n" | passwd user')

【问题讨论】:

  • 我在 2 个月前写了一些脚本,除了你在 bash 密码更改中成功执行相同的命令之外,一切工作正常,现在我打开它并发生了这个错误,不知道是什么问题以及如何修复它
  • 尝试将system 调用与\n 分开,如下所示:system("echo -e pass") 然后再次system("echo -e pass")
  • 需要和passwd同时执行
  • 尽可能使用expect。或者尝试\r 而不是\n

标签: python linux shell


【解决方案1】:

该死的 :) 所以出于某种原因尝试调试 echo 在第一次尝试时返回 -e pass\n。完全删除了 -e 参数,所以它是 system('echo "pass\npass\n" | passwd user') 并且它现在可以工作了。

【讨论】:

  • -e 应该没问题。如果echo 实际输出 -e,我会得出结论,您没有拾取“正确”回声。如果您回到原始代码,但显式调用 /usr/bin/echo -e ....,会发生什么?
  • 你说得对 /usr/bin/echo -e 也可以。
  • 如果这将是我的平台,我会调查一些时间来找出您正在执行 哪个 echo。我的感觉是您正在运行 dash 并使用内置的 echo
  • 我在几个操作系统上运行它并得到相同的结果,所以这就是它困扰我的原因。
猜你喜欢
  • 1970-01-01
  • 2017-12-03
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
相关资源
最近更新 更多