Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 通过脚本更改AIX密码?_Bash_Shell_Ssh_Passwords_Aix - Fatal编程技术网

Bash 通过脚本更改AIX密码?

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

我正在尝试通过脚本更改用户的密码。我不能使用sudo,因为有一项功能要求用户在其他用户更改密码时再次更改密码

AIX正在系统上运行

不幸的是,chpasswd不可用

我期待安装,但我也有麻烦

这是我认为有效的方法

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:~$