我想使用 ssh 创建用于更改密码的脚本。所以我使用 expect 和 bash 来运行我的脚本。
这是我的代码的一部分:
1 #!/usr/bin/expect -f
1
2 set user [lindex $argv 0]
3 set host [lindex $argv 1]
4 set password [lindex $argv 2]
5 set newpassword [lindex $argv 3]
6
7 spawn ssh $user@$host passwd
8 expect {
9 "*?password*" {
10 sleep 1
11 send "$password\n"
12 exp_continue
13 }
14 "*?(current) UNIX password*" {
16 sleep 1
17 send "$password\r"
18 exp_continue
19 }
20 "*?New password*" {
21 sleep 1
22 send "$newpassword\r"
23 exp_continue
24 }
25 "*?new UNIX password*" {
26 sleep 1
27 send "$newpassword\r"
28 exp_continue
29 }
30 "*?password updated successfully*" {
31 exit 0
32 }
33 "*?Permission denied*" {
34 exit 1
35 }
36 eof {
37 }
38 }
不幸的是,当我运行它时,我得到了错误:passwd: Authentication token manipulation error
。
spawn ssh *some user*@*some server* passwd
(current) UNIX password: *some password in plain text*
passwd: Authentication token manipulation error
Changing password for user *some user*.
Changing password for *some user*.
知道我做错了什么吗?