天天看點

Shell腳本實作自動輸入密碼登入伺服器

<a href="http://www.jb51.net/article/62349.htm" target="_blank">http://www.jb51.net/article/62349.htm</a>

如scp時不輸入密碼

先yum install tcl expect -y

測試腳本

我們寫一個簡單的腳本實作scp拷貝檔案,在腳本裡配置密碼,儲存為scp.exp如下

#!/usr/bin/expect  

set timeout 20  

if { [llength $argv] &lt; 2} {  

    puts "Usage:"  

    puts "$argv0 local_file remote_path"  

    exit 1  

}  

set local_file [lindex $argv 0]  

set remote_path [lindex $argv 1]  

set passwd your_passwd  

set passwderror 0  

spawn scp $local_file $remote_path  

expect {  

    "*assword:*" {  

        if { $passwderror == 1 } {  

        puts "passwd is error"  

        exit 2  

        }  

        set timeout 1000  

        set passwderror 1  

        send "$passwd\r"  

        exp_continue  

    }  

    "*es/no)?*" {  

        send "yes\r"  

    timeout {  

        puts "connect is timeout"  

        exit 3  

注意,第一行很重要,通常我們的腳本裡第一行是#!/bin/bash,而這裡是你機器上expect程式的路徑,說明這段腳本是由expect來解釋執行的,而不是由bash解釋執行,是以代碼的文法和shell腳本也是不一樣的,其中set passwd your_passwd設定成你自己的密碼,然後執行如下指令

./scp.exp ./local_file user@host:/xx/yy/  

執行前確定scp.exp有執行權限,chmod +x scp.exp

參數解釋可檢視:http://blog.csdn.net/lufeisan/article/details/53488395

      本文轉自flayber  51CTO部落格,原文連結:http://blog.51cto.com/406647516/1924681,如需轉載請自行聯系原作者