|
|
楼主 |
发表于 2017-12-22 17:12:25
|
显示全部楼层
echo | ssh -l root passwd --stdin5 D$ V o! G+ X& O1 |
echo "newpass" | ssh -l root 10.11.103.151 passwd --stdin dewang
; Z# m3 M0 k3 N* S8 v! _/ Zroot@10.11.103.151's password:
7 s" x; ~) T* p' I0 f1 }) EChanging password for user dewang.
( `) p% \1 T; U5 q% \passwd: all authentication tokens updated successfully.# k7 k; [5 J1 o$ L, Q
. ^) T* g' D6 Y7 V' D
% L0 R/ Q5 U3 b* S2 u% I
#!/usr/bin/expect9 ?) |! D6 Z4 I2 y2 B
#@brief to change user password by ssh remote machine9 Q! ~9 o& Z' |
% m" [- J' \" w0 @3 [proc usage {funcname} {
+ i( t4 E" p8 T3 z* L puts "Usage: "9 A! V) m* W" F5 }
puts " $funcname -user "
( c0 o8 g3 E6 { puts " $funcname -root "
( Y: Q- t$ V9 d1 Q; a. x; F} 1 \9 c& ]: I _5 [5 J% k" b
3 m$ Q4 `$ W( e$ B7 i3 t# check param7 U) F& S4 R$ I. |
if { $argc != 5 } {! _7 g9 n3 J% J2 n8 X6 a" e: s
usage $argv0
! N. H6 u7 X7 K7 ~; J exit 1
2 L' i) k! _; r0 Y p; R/ K/ X}
3 V4 a9 K( x$ X1 H
- v/ H6 m$ U* J+ {: n. p# get param
; c y6 ^) t" }5 d& o+ b9 jset host [lindex $argv 0]
5 p% u/ ]8 {7 Iset username [lindex $argv 1]+ g. ]* u8 g$ E/ j/ a$ k
set newpasswd [lindex $argv 2]1 ^* C) _+ A/ r: h1 m1 m
set loginname "root" k e5 X) m, m: I" o5 x' \
if { [string compare [lindex $argv 3] "-user"] == 0 } {1 R l( `( \3 ?' F. T
set loginname $username" I4 m2 n( s i
}4 r, D0 F7 S" C7 m6 ?
set passwd [lindex $argv 4]3 q+ E8 X3 w: b5 S
puts "$host $username $newpasswd $loginname $passwd"
2 [9 L6 I5 V8 h' h
) @$ |, k0 i- b/ i) s/ ^spawn ssh -l $loginname $host
/ z: k& {, \! ?! P5 e4 L0 f9 iexpect {# _. c; _$ z! f0 U$ ?1 y# @
"*(yes/no)*" { send "yes\r"; set sshkey 1 }
+ |! m$ [* x8 W% {% D8 B"*assword:*" { send "$passwd\r"; set sshkey 0 } K( u9 s# r; v& X: b5 O3 s
if sshkey == 1 {
1 ~9 U( t& D9 N expect "*password:*"
& m% n4 v4 X6 X# X$ n0 U# S D send "$passwd\r"
) J' |; j: Y& G}
* ^" ~& k2 Q* v8 v# e! a}
, Y5 `; e' ^& P# H6 g6 D; N" L6 Uexpect "*#"
5 w+ H; F5 W+ Y
4 j& R- e0 i# n" _& `3 N6 ?if { [string compare $loginname "root"] == 0 } {
, Y2 T, t3 ?4 M' ^9 \ #send "echo \"$username:$newpasswd\" | chpasswd\r"
+ V3 F, M( Q1 N7 N; z3 A send "echo \"$newpasswd\" | passwd --stdin \"$username\"\r"1 N5 J; l8 z0 d
} else {& f% j, A$ f2 J
send "passwd\r"9 k! w8 p9 ^; Z$ P: q
expect {( {% b: y8 R8 N3 ~4 \! w& z
"*current*assword:" {send "$passwd\r"}+ T/ R2 a. N- H% k* h
"passwd: Authentication token manipulation error" {exit}
/ {1 {! s# g! h+ K }
' K' A0 }; o4 ?# K; J% q4 G expect "New*assword:"+ |( F$ |( t. n1 u5 H
send "$newpasswd\r", a$ s, c# m" q4 x1 c. ?
expect "Retype*assword:"% }1 t5 w4 `: I6 E9 k( {+ h1 G' u" U
send "$newpasswd\r"
& C7 m, q$ O9 V' d. l- z}
0 m3 j4 \6 c6 L+ R$ D$ G# Z4 c" {expect "*#"
3 Q8 |: _+ b' T+ {6 fsend "exit\r"
8 c6 g% }4 d. }' i& T: l#interact 是否将交互权接过来,如果接过来,则用户这时可进行交互操作 |
|