使用expect实现ssh自动输入密码,从而自动登陆Linux

以下来自网上的一些资料和自己的实验,用以下命令执行: 

expect -f expect-ssh.exp <username> <password> <hostname or ip> 

注意,在这个expect-ssh.exp中,connect函数主要负责登陆,代码的最后两行,两个send是登陆上去后,执行的命令,注意最后一定要执行一个exit,否则会导致expect执行完成后还留在远程主机上。 

这里是expect-ssh.exp的源码: 
proc usage {} {
    puts stderr 
" usage: $::argv0 username password ipaddress "
    
exit   1
}

proc 
connect  {pass} {
   expect {
       
" (yes/no)? "  {
           
send   " yes\n "
           expect 
" *password: "  {
                
send   " $pass\n "
                expect {
                    
" *# "  {
                        
return   0
                    }
                }
           }
       }
       
" *password: "  {
           
send   " $pass\n "
           expect {
               
" *# "  {
                   
return   0
               }
           }
       }
   }
   
return   1
}

if  { $argc   !=   3 } { usage }

set username [lindex 
$argv   0 ]
set password [lindex 
$argv   1 ]
set hostip [lindex 
$argv   2 ]

spawn ssh ${username}@${hostip}

if  {[ connect   $password ]} {
    
exit   1
}

send   " rm -f /root/testeric;rm -f pattern_file\n "
send   " exit\n "
expect 
eof

 

 

转载于:https://www.cnblogs.com/super119/archive/2010/12/18/1909977.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值