Bash 通过脚本更改AIX密码?
我正在尝试通过脚本更改用户的密码。我不能使用sudo,因为有一项功能要求用户在其他用户更改密码时再次更改密码 AIX正在系统上运行 不幸的是,chpasswd不可用 我期待安装,但我也有麻烦 这是我认为有效的方法Bash 通过脚本更改AIX密码?,bash,shell,ssh,passwords,aix,Bash,Shell,Ssh,Passwords,Aix,我正在尝试通过脚本更改用户的密码。我不能使用sudo,因为有一项功能要求用户在其他用户更改密码时再次更改密码 AIX正在系统上运行 不幸的是,chpasswd不可用 我期待安装,但我也有麻烦 这是我认为有效的方法 echo "oldpassword\nnewpasswd123\nnewpasswd123" | passwd user 但是,一旦运行脚本,系统会提示我,请输入用户的旧密码 难道他们不应该都被回响吗 我是一名shell脚本初学者,对此我感到困惑。您可以尝试: echo-e“newp
echo "oldpassword\nnewpasswd123\nnewpasswd123" | passwd user
但是,一旦运行脚本,系统会提示我,请输入用户的旧密码
难道他们不应该都被回响吗
我是一名shell脚本初学者,对此我感到困惑。您可以尝试:
echo-e“newpasswd123\nnnewpasswd123”| passwd用户
使用GNU
passwd
stdin标志
从man
页面:
注意:仅适用于root用户
示例
$ 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 "Xcv15kl\r"
expect "Retype new password:"
send "Xcv15kl\r"
interact
结果
$ ./passwd.xp
spawn passwd foo
Changing password for user foo.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
请参阅下面的链接
http://www.putorius.net/2013/04/bash-script-to-change-users-password.html
您可以尝试:
echo“USERNAME:NEWPASSWORD”| chpasswd
这是来自:
下面的脚本需要保存为文件(例如/passwdWrapper
),并使其可执行(chmod u+x./passwdWrapper)
然后可以运行/passwdWrapper$user$password$server$newpassword
,这将实际更改密码
注意:这要求您在运行命令的机器上安装expect
。(sudo-apt-get-install-expect
)该脚本可以在CentOS 5/6和Ubuntu 14.04上运行,但是如果passwd
中的提示发生变化,您可能需要调整expect
行。您可以尝试
LINUX
回显密码| passwd用户名--stdin
UNIX
echo用户名:password | chpasswd-c
如果您不使用“-c”参数,则下次需要更改密码 除了其他建议之外,您还可以使用 在您当前的情况下,这可能看起来像:
$ /usr/bin/passwd root <<EOF
test
test
EOF
$/usr/bin/passwd root您需要echo-e才能使换行符生效
你写的
echo "oldpassword\nnewpasswd123\nnewpasswd123" | passwd user
你应该试试
echo -e "oldpassword\nnewpasswd123\nnewpasswd123" | passwd user
更可能的是,您不需要该命令的oldpassword\n部分,您只需要两个新密码。不要忘记在感叹号周围使用单引号
echo -e "new"'!'"passwd123\nnew"'!'"passwd123" | passwd user
对我来说,这在一个流浪的虚拟机中起了作用:
sudo /usr/bin/passwd root <<EOF
12345678
12345678
EOF
sudo/usr/bin/passwd root如果您可以使用ansible并在其中设置sudo权限,那么您就可以轻松地使用此脚本。如果您想编写这样的脚本,这意味着您需要在多个系统上执行。因此,您也应该尝试将其自动化。仅此而已
passwd <<EOF
oldpassword
newpassword
newpassword
EOF
passwd我在bash脚本中有以下代码,它运行良好:useradd-s/bin/bash-g www-data-d/var/www/$vhost$Name;echo-e“$sshPasswd\n$sshPasswd”| passwd$Name;id$Name
是的,我也试过:“echo oldpassword\nnewpasswd123\nnewpasswd123”| passwd--stdin user
我得到passwd:非法选项---我需要根目录,我得到了相同的“非法选项”--看起来是这样的,很多人的建议看起来应该有效,但是不要在Ubuntu 16.04上运行:passwd:unrecogned option'--stdin'
新版本不支持--stdin(例如openSUSE Leap 42.1;它在12.1中运行,但不再工作)。谢谢,但这只是这一行echo-e“$password1\n$password1”| passwd$username
我的系统不喜欢你在这里提供了新密码吗?echo-e“$password1\n$password1”| passwd$USERNAME要让它为我工作,我必须将它更改为:echo“USERNAME:NEWPASSWORD”| sudo chpasswd
当通过非sudo父脚本执行时chpasswd
对我来说似乎是正确的答案。为我建立了一个码头工人形象。我喜欢以下(在bash中)来避免“echo”噪音:chpasswd注意AIX不是Linux;您应该更新您的问题,以澄清您所询问的内容。@rakslice-更改了标题。此脚本可以在linux机器上运行。您可以根据您的环境修改某些内容,如邮件中继服务器或更改密码字符的限制等。如果密码包含“\n”怎么办?例如my@secret\npasword123
?回答得很好!在Ubuntu上对我很好。我也有类似的要求,但这是我第一次设置(而不是更改)用户密码。提到\n字符和-e选项来分隔对2个密码提示的回复,这确实帮助了我。如果你能忘记sudo这个词并在一行中添加旧密码,这仍然是一个简单的答案。echo username:password | chpasswd-c
抛出错误
echo "oldpassword\nnewpasswd123\nnewpasswd123" | passwd user
echo -e "oldpassword\nnewpasswd123\nnewpasswd123" | passwd user
echo -e "new"'!'"passwd123\nnew"'!'"passwd123" | passwd user
sudo /usr/bin/passwd root <<EOF
12345678
12345678
EOF
passwd <<EOF
oldpassword
newpassword
newpassword
EOF
user@host:~$ passwd <<EOF
oldpassword
newpassword
newpassword
EOF
Changing password for user.
(current) UNIX password: Enter new UNIX password: Retype new UNIX password:
passwd: password updated successfully
user@host:~$