expect實現ssh自動登錄

《mypasswd》文件格式: 

#註釋 

name:ip:user:password 

name:ip:user:password 


 使用方法:

        %./login.exp <name> 登陸name指定的服務器

        %./login.exp h [l] 打印幫助信息,聯合l選項打印多有信息


 login.exp:

#! /usr/bin/expect -f


set arg1 [lindex $argv 0]
set arg2 [lindex $argv 1]
if {"$arg1" == ""} {
   puts "Usage:"
   puts "./thisfile server_name"
   puts "use h \[l\] for help and server list"
   exit
}
set passfilename "passwd"
puts "Use passwd file: $passfilename"
set passfile [open $passfilename r]
if {"$arg1" == "h"} {
   while {[gets $passfile line] != -1} {
       set line [string trim $line]
       if {"$arg2" == "l"} {
           puts $line
           continue
       }
       if {[string index $line 0] == "#"} {
           puts $line;
           continue
       }
  }
  close $passfile
  exit
} else {
   set fund "filed"
   while {[gets $passfile line] != -1} {
       #puts $line
       set line [string trim $line]
       set fields [split $line ":"]
       if {[lindex $fields 0] == "$arg1"} {
           puts $line
           set hostLongIP [lindex $fields 1]
           set user [lindex $fields 2]
           set passwd [lindex $fields 3]
           set fund "ok"
           break
       }
   }
   if {"$fund" != "ok"} {
       puts "ERROR"
       close $passfile
       exit 404 
   }
}
close $passfile
send_user "\n\nooooooooooooooooo $user@$hostLongIP ooooooooooooooooooo\n\n" 
spawn ssh -l $user $hostLongIP
expect { 
   "password:" {send $passwd; send "\n"}
}
interact

另附《exploring expect》下載地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章