使用expect實現ssh自動輸入密碼,從而自動登陸Linux

來源:互聯網
上載者:User
以下來自網上的一些資料和自己的實驗,用以下命令執行: 

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

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.