1. 程式人生 > >Expect 批量登陸多臺伺服器辦法

Expect 批量登陸多臺伺服器辦法

Expect是基於TCL語言的,也就是說可以在Expect裡直接使用TCL語言。只用Expect基本的命令有些應付不了比較複雜的使用場景,比如批量登陸多臺伺服器等。使用TCL語言可以很方便地控制程式。

以下的程式碼完成用SSH登陸到多臺不同IP,不同登陸密碼的伺服器

------------------------------------------------------------------------------------------------------------------

#!/usr/bin/expect
#!/bin/bash     
set port 22 


#node setting
# ip:login_user:login_passwd:
set nodeinfo "10.77.20.153:root:sisesise     
    192.168.1.1:root:mypassword1
    192.168.1.2:root:mypassword2
    192.168.1.3:root:mypassword3
    192.168.1.4:root:mypassword4



foreach node $nodeinfo {
    set host_info [split $node ":"]
    set ssh_ip              [lindex $host_info 0]
    set ssh_loginName       [lindex $host_info 1]
    set ssh_loginPasswd     [lindex $host_info 2]


    send_user "=======================begin...=====================/n"
    #ssh into the host   
    spawn ssh -D $port 

[email protected]$ssh_ip
    expect {
    "*yes/no*" {
         send "yes/r";
         expect "*assword*";
         send "$ssh_loginPasswd/r"
         }
    "*assword*" {
         send "$ssh_loginPasswd/r"
         }
    }   

    expect "*#"

    send "ls/r"

  ------------------------------------------------------------------------------------------------------------------------------------

  #現在已經登陸到伺服器ssh_ip上,可以新增自己需要的程式碼。這是我工作程式碼中的一部分,我沒有仔細檢查是否可以執行(別忘了安裝expect:)。

  #如果執行不了可以郵我

}