|
|
楼主 |
发表于 2017-12-22 17:12:25
|
显示全部楼层
echo | ssh -l root passwd --stdin4 {0 d( a8 P0 \7 l
echo "newpass" | ssh -l root 10.11.103.151 passwd --stdin dewang
: y2 {. U1 S7 Q& Y3 C3 ~; ?root@10.11.103.151's password:
" Q6 I/ v& ~ z; [( y% ]4 aChanging password for user dewang.+ Q; o7 q! C5 h4 `5 t4 g
passwd: all authentication tokens updated successfully.
" _& j ~ @/ z# j' K! u
. d. j" @+ T2 v; R( X; B$ m
- X0 g5 e0 H) `- f. F+ ?#!/usr/bin/expect) f! V Z/ o* E5 w: H. F! X
#@brief to change user password by ssh remote machine! X" k# c( d" g+ Z
) R1 Y7 Z/ l8 S' k: v% x7 z" pproc usage {funcname} {
; n$ l6 E# k* M; U( d9 ^ L5 K, u puts "Usage: "
0 b. p. `* P7 z; `; d. [/ i puts " $funcname -user "
- d) d; |) K$ h8 _3 m& D- J* m! @* h puts " $funcname -root "
; I$ J, B* P* E7 J9 Q& [) `} $ a* M Q! l; j ~/ p+ d
. f7 S8 r1 C) X, d- [' }
# check param- n3 T# ^' k6 b. i: V5 E7 _# F
if { $argc != 5 } {* U U1 m1 D) _# A; Q5 a
usage $argv0 3 h: Q9 \: O6 C% u0 Y
exit 1) J, F5 j+ J4 A8 K8 P9 v: O
}
+ s" _' E6 {/ f. g3 Y7 @8 p& x8 M9 W; J! u0 ]1 r* R! i
# get param
9 L: s' ^! z" q" v" O3 e/ W6 rset host [lindex $argv 0]
' J: e5 B% l' |. S9 x7 ^ Iset username [lindex $argv 1]
& ^+ a9 H& o2 A7 o" Iset newpasswd [lindex $argv 2]1 i& Z* M# V! s
set loginname "root"
. Z0 u( } n3 c* `+ rif { [string compare [lindex $argv 3] "-user"] == 0 } {: v# |; v: F* o0 ^* h3 x V- ^8 k, I- ?
set loginname $username
% W4 p7 @4 H: q1 j; e/ K}
( \5 s _& o0 K3 k( O$ U" }# g$ q5 {set passwd [lindex $argv 4]
+ D+ q0 F h( d U; E k8 w1 xputs "$host $username $newpasswd $loginname $passwd" h: h( u* ~! h
3 P) f' U9 Z) i8 xspawn ssh -l $loginname $host/ c* F" j, S2 D; h i
expect {
# t4 K8 s% V- C6 z' s1 @"*(yes/no)*" { send "yes\r"; set sshkey 1 }
/ e- k- w9 j1 X* `7 y+ F5 H"*assword:*" { send "$passwd\r"; set sshkey 0 }7 I) ^& i, g2 F9 i0 n W5 Y. Z
if sshkey == 1 {
. t, L# Z, |& j8 v4 Z( q expect "*password:*"
0 S# Z0 L) z; i4 `8 K; A2 j3 x send "$passwd\r"; _1 m: T. P2 ~4 V8 m
}
. v1 C/ A/ L8 b, u! ~}
) K& y: ^: @: d5 G% W3 k; texpect "*#"
: ~* T$ e/ a& j# \: m; d4 B$ N8 r& L. \. ?+ l5 _
if { [string compare $loginname "root"] == 0 } {9 |( @4 H7 ?, X/ Y$ c( }. j7 u
#send "echo \"$username:$newpasswd\" | chpasswd\r"- K0 x$ l) X4 ]9 N
send "echo \"$newpasswd\" | passwd --stdin \"$username\"\r"1 R* H$ o% t, W* x& Q+ I8 G) m
} else {
; y, ?" e% e) ?9 {/ k& Y* Z send "passwd\r"9 c+ y/ `& v1 B" e: q) Z B' G
expect {
, S& g) d6 k+ D: d8 j4 M: F "*current*assword:" {send "$passwd\r"}1 J8 G" J C# J- `
"passwd: Authentication token manipulation error" {exit}
8 }3 c1 W" m* Z, }: A }
2 Z" M8 a. O! _6 A4 h expect "New*assword:"
6 j6 e$ a0 q- ]5 p3 L send "$newpasswd\r"& f3 N, H5 Z1 R' `+ n# u6 W
expect "Retype*assword:"
! d1 i9 q9 n2 v, L) X send "$newpasswd\r"
! D! |6 r# D h( ?! r* Z/ D* h4 g}
2 m: a9 o s+ v( l+ @expect "*#"( N! z* R# e7 U: {+ ]
send "exit\r"
1 A& d! t& j% W: u#interact 是否将交互权接过来,如果接过来,则用户这时可进行交互操作 |
|