bash - bash通过脚本更改AIX密码?

  显示原文与译文双语对照的内容
145 2

我正在尝试通过脚本更改用户的密码。 我不能使用 sudo,因为有一个要求用户在另一个用户更改密码时再次更改密码的特性。

AIX正在系统上运行。

不幸的是,chpasswd不可用。

我期望安装,但我也遇到了问题。

这就是我想


echo"oldpasswordnnewpasswd123nnewpasswd123" | passwd user



但是,一旦运行脚本,我将提示 please enter user's old password 它们是不是都应该被?

我是 shell 脚本的初学者,这已经baffled了。

时间: 原作者:

86 0

使用收费的GNU passwd 标准的标准标记。

man 页面:


 --stdin


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



注意:仅对收费为的用户

示例


$ adduser foo 


$ echo"NewPass" |passwd foo --stdin


Changing password for user foo.


passwd: all authentication tokens updated successfully.



或者,你可以使用 expect,这个简单的代码将执行以下操作:


#!/usr/bin/expect


spawn passwd foo


expect"password:"


send"Xcv15klr"


expect"Retype new password:"


send"Xcv15klr"


interact



结果


$./passwd.xp 


spawn passwd foo


Changing password for user foo.


New password: 


Retype new password: 


passwd: all authentication tokens updated successfully.



原作者:
76 4

除了其他建议,你还可以使用一个 HEREDOC来实现这一点。

在你的直接情况下,这可能类似于:


$/usr/bin/passwd root <<EOF


test


test


EOF



104 5

要使换行字符生效,需要使用 echo -e

你写


echo"oldpasswordnnewpasswd123nnewpasswd123" | passwd user



你应该试试


echo -e"oldpasswordnnewpasswd123nnewpasswd123" | passwd user



很可以能,你不需要该命令的oldpasswordn部分,你应该只需要两个新的密码。 不要忘了在感叹号中使用单引号 !


echo -e"new"'!'"passwd123nnew"'!'"passwd123" | passwd user



88 0

你可以尝试:

回显 -e"newpasswd123nnnewpasswd123"| passwd用户

...