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

在shell脚本中使用passwd命令

柳飞鸾
2023-03-14
问题内容

我正在编写一个shell脚本,以自动添加新用户并更新其密码。我不知道如何获取passwd来从shell脚本中读取,而不是交互式地提示我输入新密码。我的代码如下。

adduser $ 1
密码$ 1
$2
$2

问题答案:

来自“ man 1 passwd”:

   --stdin
          This option is used to indicate that passwd should read the new
          password from standard input, which can be a pipe.

所以你的情况

adduser "$1"
echo "$2" | passwd "$1" --stdin

[ 更新 ]评论中提到了一些问题:

您的passwd命令可能没有--stdin选项:chpasswd按照ashawley的建议使用实用程序。

如果您使用的不是bash外壳,则“echo”可能不是内置命令,外壳将调用/bin/echo。这是不安全的,因为密码将显示在进程表中,并且可以通过诸如之类的工具查看ps

在这种情况下,您应该使用另一种脚本语言。这是Perl中的示例:

#!/usr/bin/perl -w
open my $pipe, '|chpasswd' or die "can't open pipe: $!";
print {$pipe} "$username:$password";
close $pipe


 类似资料:
  • 问题内容: 我正在尝试创建用于设置Docker容器的Shell脚本。我的脚本文件如下所示: 运行此脚本文件将在新调用的bash中运行容器。 现在,我需要运行一个脚本文件(test.sh),该文件已经位于上述给定的shell脚本的容器内(例如:cd /path/to/test.sh && ./test.sh),该怎么做? 问题答案: 您可以使用以下命令在正在运行的容器中运行命令: 并从bash会话运

  • stty 命令 stty -echo #禁止将输入信息显示在终端 stty echo #允许输入信息显示在终端,默认显示 tput 命令 tput clear #清空终端 tput civis #光标不可见 tput cnorm #光标可见 read 命令 read name #读取终端输入的值并赋值给 name 变量 echo $name #输出变量值 read userna

  • 问题内容: 我有一个python脚本,该脚本在运行时会在终端上记录信息,我想将此记录信息发送到文本文件, 为了实现这一点,我正在插入文件 在文件末尾,我放入 问题是当它调用第一个命令时,它将终止脚本, 提前感谢我如何做这项工作的任何建议 问题答案: 问题在于,直到退出产生的外壳程序才返回,这时您的Python脚本将恢复。 执行所需操作的最简单方法是使用Python脚本作为参数来调用自身。代替 您将

  • 我有一个bash脚本,简而言之,它通过其他命令生成文件(工作正常),然后在脚本的后面,我对生成的文件执行wc命令。我的问题是我在wc命令上使用命令替换,当我执行脚本时,它会立即执行此替换,而不是等待脚本中较早生成的文件。我有什么选择? 该脚本是一个shell程序,用于运行Oracle SQLLoader以将数据加载到Oracle表中。SQLLoader命令生成一个包含拒绝记录的文件,我正在尝试对其

  • 问题内容: 在Linux Shell脚本中使用正则表达式解析字符串的正确方法是什么?我编写了以下脚本,使用和在控制台上打印我的SO代表(不仅仅因为我代表rep -crazy-我试图在切换到Linux之前学习一些Shell脚本和regex)。 但是我觉得这不是在这里使用的适当工具。我听说这与正则表达式有关,并进行了一些探讨。但是很明显,只要找到匹配项,它就会打印整行- 我正试图从一行文本中提取一个数

  • 拉斯宾(杰西)-root@RaspberryPi-腻子 在我输入的终端中 现在我得到了一个包含此代码的脚本 有一个cronjob每小时启动一次这个脚本 苏。一定有什么地方出错了。因为他将变量$finalanswer解读为nothing。 这意味着在此脚本之外定义的变量将不起作用? 我该如何解决这个问题?