1

我想使用 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*.

知道我做错了什么吗?

4

0 回答 0