Kom*_*mpi 3 command-line password passwd
是否可以运行带有显示新输入密码选项的passwd命令?默认情况下,它不显示我输入的内容,我不想要这个。
[dave@hal9000 ~]$ passwd
Changing password for user dave.
Changing password for dave.
(current) UNIX password:
New password: bowman
Retype new password: bowman
passwd: all authentication tokens updated successfully.
Run Code Online (Sandbox Code Playgroud)
如果你真的想走这条路并且没有passwd参数,你可以使用这个Expect脚本:
#!/usr/bin/env expect -f
set old_timeout $timeout
set timeout -1
stty -echo
send_user "Current password: "
expect_user -re "(.*)\n"
set old_password $expect_out(1,string)
stty echo
send_user "\nNew password: "
expect_user -re "(.*)\n"
set new_password $expect_out(1,string)
set timeout $old_timeout
spawn passwd
expect "password:"
send "$old_password\r"
expect "password:"
send "$new_password\r"
expect "password:"
send "$new_password\r"
expect eof
Run Code Online (Sandbox Code Playgroud)
这个怎么运作:
[dave@hal9000 ~]$ ./passwd.tcl
Current password:
New password: bowman
spawn passwd
Changing password for user dave.
Changing password for dave.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
Run Code Online (Sandbox Code Playgroud)
这个 shell 脚本也可以工作(在 Fedora 20 上用 bash-4.2.47-2 和 passwd-0.79-2 测试过):
#!/bin/sh
stty -echo
echo -n "Current password: "
read old_password
stty echo
echo
echo -n "New password: "
read new_password
passwd << EOF
$old_password
$new_password
$new_password
EOF
Run Code Online (Sandbox Code Playgroud)
这个怎么运作:
[dave@hal9000 ~]$ ./passwd.sh
Current password:
New password: bowman
Changing password for user dave.
Changing password for dave.
(current) UNIX password: New password: Retype new password: passwd: all authentication tokens updated successfully.
Run Code Online (Sandbox Code Playgroud)