天天看點

分發系統介紹、expect腳本遠端登入、expect腳本遠端執行指令、expect腳本傳遞參數

<code>expect可以讓我們實作自動登入遠端機器,并且可以實作自動遠端執行指令。當然若是使用不帶密碼的密鑰驗證同樣可以實作自動登入和自動遠端執行指令。但當不能使用密鑰驗證的時候,我們就沒有辦法了。是以,這時候隻要知道對方機器的賬号和密碼就可以通過expect腳本實作登入和遠端指令。</code>

安裝:

[root@centos7 mon]# yum install -y expect

分發系統介紹、expect腳本遠端登入、expect腳本遠端執行指令、expect腳本傳遞參數

[root@centos7 shares]# vi login.expect 

#! /usr/bin/expect

set host "192.168.3.83"

#連接配接到主機192.168.3.83

set passwd "123456"

#密碼

spawn ssh root@$host

#spawn調用shell指令ssh(登入),“set host”和“set passwd”為expect定義的兩個變量

expect {

"yes/no" { send "yes\r"; exp_continue}

#ssh首次遠端登入一台主機是會提示yes/no;"\r“表示回車

"assword:" { send "$passwd\r" }

}

interact

#interact的作用是停留在遠端機器上,不退出

#expect腳本結束符号:expect eof——執行結束後暫停幾秒鐘後退出

#如果不加任何結束符号,指令執行完後馬上退出

執行:

chmod +x login.expect

[root@centos7 shares]# ./login.expect 

spawn ssh [email protected]

[email protected]'s password: 

Last login: Thu Nov 30 11:36:38 2017 from 192.168.3.74

登入到了192.168.3.83上

執行完成就退出了

vim 2.expect

#!/usr/bin/expect

set user "root"

spawn ssh [email protected]

"password:" { send "$passwd\r" }

expect "]"

#比對到“]”時執行下面的指令

send "touch /tmp/12.txt\r"

send "echo 1212 &gt; /tmp/12.txt\r"

expect "]*"

send "exit\r"

1、[root@centos7 shares]# vim 3.expect

#調用expect内置變量:“[lindex $argv 0]”、“[lindex $argv 1]”、“[lindex $argv 2]”

set user [lindex $argv 0]

set host [lindex $argv 1]

set cm [lindex $argv 2]

spawn ssh $user@$host

"yes/no" { send "yes\r"}

send "$cm\r"

2、[root@centos7 shares]# chmod +x 3.expect 

[root@centos7 shares]# ./3.expect root 192.168.3.83 ls;w

Last login: Thu Nov 30 11:42:28 2017 from 192.168.3.74

[root@test ~]# 11:44:28 up 1 day, 9:49, 2 users, load average: 0.11, 0.07, 0.06

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.3.81 Tue17 22:52 0.29s 0.29s -bash

root pts/1 192.168.3.81 Tue10 4.00s 1.20s 0.01s w

本文轉自方向對了,就不怕路遠了!51CTO部落格,原文連結:http://blog.51cto.com/jacksoner/2045998 ,如需轉載請自行聯系原作者

繼續閱讀