Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1724697
  • 博文数量: 293
  • 博客积分: 10574
  • 博客等级: 上将
  • 技术积分: 5085
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-22 17:00
文章分类

全部博文(293)

文章存档

2011年(27)

2010年(84)

2009年(62)

2008年(120)

我的朋友

分类: LINUX

2010-05-25 10:10:06

more /usr/bin/g
#!/usr/bin/expect
set username "youhong"
#ssh的用户名
set passwd "DKi7AmDs4XFxx+3iardQsdp0b6sXJHYylHyr..."
set server "x.x.x.x"
spawn zssh ;
expect "*password: ";
sleep .1;
send "$passwd\r";
expect "*PASSCODE:";
sleep .1;
send "xxxx"; //2次验证
#当出现提示输入密码时,自动输入密码
interact;
 
 
 
#!/usr/bin/expect
spawn ssh -l wul qa20.asc.cnz.alibaba-inc.com
expect "*Password*"
send "123456\r"
expect "*#*"
send "pwd\r"
expect "*#*"
send "exit\r"
#!/usr/bin/expect
spawn ssh hosta
sleep 1
expect "password: "
sleep 1
send "welcome\r"
sleep 1
send "ls >/tmp/l3.log\r"
send "echo status:$?\r"
sleep 1
expect -re "status:(\[0-9]+)" { exit $expect_out(1,string) }
sleep 1
exit
 

远程修改用户密码(expect)

一:通过登陆远程root修改密码
通过远程登陆修改netseek用户 密码为52netseek
echo "52netseek" | ssh -l root 192.168.1.112 passwd --stdin netseek

二:  通过expect脚本 登陆普通用户修改自己的密码.
#!/usr/bin/expect
#@brief to change user password by ssh remote machine

proc usage {funcname} {
    puts "Usage: "
    puts "    $funcname -user "
    puts "    $funcname -root "
}   

# check param
if { $argc != 5 } {
    usage $argv0
    exit 1
}

# get param
set host [lindex $argv 0]
set username [lindex $argv 1]
set newpasswd [lindex $argv 2]
set loginname "root"
if { [string compare [lindex $argv 3] "-user"] == 0 } {
    set loginname $username
}
set passwd [lindex $argv 4]
puts "$host $username $newpasswd $loginname $passwd"

spawn ssh -l $loginname $host
expect {
"*(yes/no)*" { send "yes\r"; set sshkey 1 }
"*assword:*" { send "$passwd\r"; set sshkey 0 }
if sshkey == 1 {
    expect "*password:*"
    send "$passwd\r"
}
}
expect "*#"

if { [string compare $loginname "root"] == 0 } {
    #send "echo \"$username:$newpasswd\" | chpasswd\r"
    send "echo \"$newpasswd\" | passwd --stdin \"$username\"\r"
} else {
    send "passwd\r"
    expect {
    "*current*assword:" {send "$passwd\r"}
    "passwd: Authentication token manipulation error" {exit}
    }
    expect "New*assword:"
    send "$newpasswd\r"
    expect "Retype*assword:"
    send "$newpasswd\r"
}
expect "*#"
send "exit\r"


用法:
Usage:
./exp.sh -user
./exp.sh 192.168.1.112 netseek 52netseekabc  -user 52linux tone

阅读(1167) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~