Ubuntu中echo "test" | password --stdin test 错误


今天看到了马哥的视频,讲道理passwd命令和管道的标准输入时,一个命令重置密码。

我测试了一下报错

echo "test" | password --stdin test


root@localhost:/home/test2# echo "test" | password --stdin test

未找到 'password' 命令,您要输入的是否是:

命令 'assword' 来自于包 'assword' (universe)

password:未找到命令

root@localhost:/home/test2# echo "test" | passwd --stdin test

passwd:无法识别的选项“--stdin”

Usage: passwd [options] [LOGIN]


Options:

-a,--all report password status on all accounts

-d,--delete delete the password for the named account

-e,--expire force expire the password for the named account

-h,--help display this help message and exit

-k,--keep-tokens change password only if expired

-i,--inactive INACTIVE set password inactive after expiration

to INACTIVE

-l,--lock lock the password of the named account

-n,--mindays MIN_DAYS set minimum number of days before password

change to MIN_DAYS

-q,--quiet quiet mode

-r,--repository REPOSITORY change password in REPOSITORY repository

-R,--root CHROOT_DIR directory to chroot into

-S,--status report password status on the named account

-u,--unlock unlock the password of the named account

-w,--warndays WARN_DAYS set expiration warning days to WARN_DAYS

-x,--maxdays MAX_DAYS set maximum number of days before password

change to MAX_DAYS


我看到这个错误,我以为是passwd --stdin这个参数问题,于是我上网百度了一下,大家都说没问题啊,

意外在Ubuntu论坛中发现了一个帖子

最近学习鸟哥的passwd用法时练习建立账号并修改密码(密码统一为“password”),程序如下
#!/bin/bash
groupadd myquotagrp
for username in myquota1 myquota2 myquota3 myquota4 quota5
do
useradd -g myquotagrp $username
echo "password" | passwd --stdin $username
done
运行后报错
passwd: unrecognized option '--stdin'
Usage: passwd [options] [LOGIN]

Options:
-a,--all report password status on all accounts
-d,--delete delete the password for the named account
-e,--expire force expire the password for the named account
-h,--help display this help message and exit
-k,--keep-tokens change password only if expired
-i,--inactive INACTIVE set password inactive after expiration
to INACTIVE
-l,--lock lock the password of the named account
-n,--mindays MIN_DAYS set minimum number of days before password
change to MIN_DAYS
-q,--quiet quiet mode
-r,--repository REPOSITORY change password in REPOSITORY repository
-S,--status report password status on the named account
-u,--unlock unlock the password of the named account
-w,--warndays WARN_DAYS set expiration warning days to WARN_DAYS
-x,--maxdays MAX_DAYS set maximim number of days before password
change to MAX_DAYS
我又查了下passwd的用法,虽然不是很懂,但尝试了openssl passwd -stdin
还是报错:
Usage: passwd [options] [passwords]
where options are
-crypt standard Unix password algorithm (default)
-1 MD5-based password algorithm
-apr1 MD5-based password algorithm,Apache variant
-salt string use provided salt
-in file read passwords from file
-stdin read passwords from stdin
-noverify never verify when reading password from terminal
-quiet no warnings
-table format output as table
-reverse switch table columns


最后看到了其中一个信息

passwd的--stdin参数ubuntu不支持,其实debian就不支持这个,自己后来在centos7中测试了一下,可以,原理问题就出在这里

因为我的系统是Ubuntu14.04的系统,终于找到问题的原因了。


后来在网上找到了一个方法就是换行,模拟两次输入密码,但是发现还是不行,

root@localhost:/home/test2# echo "test\ntest" | passwd test2

输入新的 UNIX 密码: 重新输入新的 UNIX 密码: passwd: 认证令牌操作错误

passwd: password unchanged


自己直接重置密码可以。

root@localhost:/home/test2# passwd test2

输入新的 UNIX 密码:

重新输入新的 UNIX 密码:

passwd: password updated successfully

root@localhost:/home/test2#


自己想到这里也没有好的办法了,希望高手也可以留言,帮忙解决一下吧

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...