CentOS使用expect批次遠端執行指令碼和命令

安全劍客發表於2020-07-10
我們有時可能會批次去操作伺服器,比如批次在伺服器上上傳某個檔案,安裝軟體,執行某個 和 ,重啟服務,重啟伺服器等,如果人工去一臺臺操作的話會特別繁瑣,並浪費人力。

這時我們可以使用expect,向目標伺服器上傳送指令去實現批次操作。

下面的例子將在 上將一個檔案,批次複製到其他服務商上,並執行相應的

1. 在centos上安裝expect
yum install expect
2. 編寫expect  copyfilebatch.sh

下面的指令碼將向內網IP為 192.168.0.102 至 192.168.0.112 的伺服器分別複製一個rc.local檔案,複製成功後,執行chmod命令,分別重啟伺服器

#!/usr/bin/expect -f
set password rootpassword
for {set i 102} {$i <= 112} {incr i} {
  set ip "192.168.0.$i"
  puts "$ip"
  spawn ssh -o StrictHostKeyChecking=no $ip
  set timeout 3
  expect "root@$ip's password:"
  set timeout 3
  send "$password\r"
  set timeout 3
  send "exit\r"
  spawn scp /home/install/rc.local root@$ip:/etc/rc.d/rc.local
  set timeout 3
  expect "root@$ip's password:"
  set timeout 3
  send "$password\r"
  set timeout 3
  send "exit\r"
  spawn ssh root@$ip
  expect {
  "*yes/no" { send "yes\r"; exp_continue}
  "*password:" { send "$password\r" }
  }
  expect "#*"
  #要執行的命令
  send "chmod +x /etc/rc.d/rc.local\r"
  send "reboot\r"
  send "exit\r"
  expect eof
}

以上就是本文的全部內容,希望對大家的學習有所幫助

原文地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2703783/,如需轉載,請註明出處,否則將追究法律責任。

相關文章