- 积分
- 16844
在线时间 小时
最后登录1970-1-1
|

楼主 |
发表于 2017-12-22 17:12:25
|
显示全部楼层
echo | ssh -l root passwd --stdin" Z' ~7 W( @- E- s5 d. n2 c
echo "newpass" | ssh -l root 10.11.103.151 passwd --stdin dewang
/ }2 j9 x) r2 H7 n2 h& jroot@10.11.103.151's password:
: \1 e8 M$ Q# S- Z. v. M1 FChanging password for user dewang.
) F* k R$ Z9 H; vpasswd: all authentication tokens updated successfully.
7 ?9 n7 d; j+ \* ]4 x( x3 s) Y/ I- _% q" R4 A1 D8 E" J# M& L( d# Y
/ u7 o; ^# v( u0 V, k# ]
#!/usr/bin/expect
) K% m1 S; u( w: e) C# m$ R& P#@brief to change user password by ssh remote machine
# M' B, v6 U' n' K* d# R0 O
* ?; ]3 D- Q' W4 Lproc usage {funcname} {8 J8 O5 R J: z) P9 a
puts "Usage: "! }0 U' D, n; N! K3 M
puts " $funcname -user "+ c( f1 W4 B7 p
puts " $funcname -root "
. G4 B: z' u& s}
" @; Q) Z3 \" Q: b& X/ M2 Q
$ n! o+ R( u, x' T; u. S. I# check param
! @ q0 F8 ~! Iif { $argc != 5 } {
H* D0 U; y# [8 c+ C0 S usage $argv0 , I/ V8 I) h/ B' Z. N' p# {
exit 1$ o+ e0 A+ a1 c0 y; @
}4 l- z- A8 f$ k' A8 s' N8 U
& ?& n9 G: I' S' D" z$ f' x. c. U
# get param
* |: ^$ Q& U- H' ^* N8 L% D- p/ Tset host [lindex $argv 0]
5 m$ ^& |6 |0 u! |$ _set username [lindex $argv 1]8 s. ~, N6 G+ u7 v* Y
set newpasswd [lindex $argv 2]$ Y* ]& O! Z2 N2 c
set loginname "root"
( ?8 n2 H" H" s$ R# sif { [string compare [lindex $argv 3] "-user"] == 0 } {
/ v) [/ t) e- y) f% H7 z/ @/ P set loginname $username! G7 v0 u# V' _" O3 G: y" X
}. \& A L" O+ B8 s! ?" i
set passwd [lindex $argv 4]$ q9 m/ h, k+ I$ e' f% j5 Y0 U7 P
puts "$host $username $newpasswd $loginname $passwd": M" M' b6 p/ P. ]! a1 N$ r1 |
+ T. {8 T5 o$ j3 ^
spawn ssh -l $loginname $host* [4 L* _: I, |' n" K1 ?0 D
expect {
, v& n. a% d0 W" t"*(yes/no)*" { send "yes\r"; set sshkey 1 }
# @: z) X* D- o! p"*assword:*" { send "$passwd\r"; set sshkey 0 }
* S; y2 l- a, H* L zif sshkey == 1 {5 [- }* }! P$ V, H
expect "*password:*"1 Q' d9 E" }& p; |- n7 M- G; ?# {
send "$passwd\r"
8 g0 a0 t" b; m' F* F9 }6 k}
' l7 t. u2 u. e7 F3 k _}
! ^6 T) H, ^+ t6 e& t3 i2 Yexpect "*#"
. U: I% q5 A2 T
g8 t% c5 i2 [6 X' H Cif { [string compare $loginname "root"] == 0 } {
" Z# K# W) o! Y0 C8 Y$ j, r1 ^9 e #send "echo \"$username:$newpasswd\" | chpasswd\r"
+ w+ ?8 D! p$ a3 H4 E7 L6 g8 H send "echo \"$newpasswd\" | passwd --stdin \"$username\"\r"
" i- _- ?( a! G( W} else {
) R- ], F8 R8 K' q6 g send "passwd\r"2 r ~" F2 _+ V1 h7 ]. T1 U! @0 v0 ?
expect {: g- ?% H# ^! m4 C% a
"*current*assword:" {send "$passwd\r"}
) l9 P, @7 E- w* m, ^7 w2 \+ m5 e6 ? "passwd: Authentication token manipulation error" {exit}
$ i3 h; a" k3 U8 U }! Y7 c% N* I4 ?0 o: o' i; F- Q
expect "New*assword:"9 v; ^& [& X3 h
send "$newpasswd\r"
5 x0 v! J: Y! H& l6 R4 p expect "Retype*assword:"
# D/ j2 B0 V' c/ W* ~ send "$newpasswd\r"+ c( `* C1 F2 n) r
}
. ~7 {" y) G/ L$ z+ | F3 Zexpect "*#"
( K1 `% D( B" \5 X4 E4 R" Z' o# Tsend "exit\r"
+ r* k' n' @( x& `( D A2 T0 U#interact 是否将交互权接过来,如果接过来,则用户这时可进行交互操作 |
|