Chinaunix首页 | 论坛 | 博客
  • 博客访问: 539902
  • 博文数量: 104
  • 博客积分: 2089
  • 博客等级: 大尉
  • 技术积分: 1691
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-29 08:48
文章分类

全部博文(104)

文章存档

2015年(1)

2013年(13)

2012年(31)

2011年(59)

分类: LINUX

2013-04-17 12:03:21

解决~/.ssh/known_hosts 过期问题。
bash + expect

bash:ssh.sh
  1. #!/bin/bash

  2. help(){
  3.     echo "usage: [password]"
  4. }
  5. [ -z "$1" ] && { help; exit 1; } || {
  6.     case $1 in
  7.         -*) help; exit ;;
  8.         *) ip=$1;;
  9.     esac
  10. }
  11. shift
  12. ssh.exp "$ip" "$@"
  13. [ "$?" = "1" ] && ssh-keygen -R $ip && ssh_ivie.exp "$ip" "$@"

expec
ssh.exp
  1. #!/usr/bin/expect -f

  2. proc help {} {
  3. puts {usage: <ivie_ip> [password]}
  4. }

  5. if {$argc<1} { help ; exit}
  6. set ip [ lindex $argv 0 ]

  7. set password rootroot
  8. if {$argc==2} { set password [lindex $argv 1] }


  9. # close the output
  10. log_user 0


  11. set timeout 30
  12. spawn ssh -XY root@$ip
  13. expect {
  14.     -re ".*:~ # " {}
  15.     "Password: " { send "$password\r" }
  16.     "(yes/no)?" {send "yes\r"; exp_continue}
  17.     "Host key verification failed" { send_user "run: ssh-keygen -R $ip" ; exit 1 }
  18.     timeout {puts "check your ip: $ip"; exit 2}
  19.     eof { puts "check your ip: $ip" ;exit 3 }
  20. }
  21. interact

我测试过在一个expect中完成,但是没有成功。还望有谁能够完成,给予指教。




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