1. 程式人生 > >Linux_Shell 利用ssh, expect 在多個機器上執行指令

Linux_Shell 利用ssh, expect 在多個機器上執行指令

相關的基礎指令介紹

基礎介紹文件

示例一: 

多臺機器上安裝軟體, 指令碼需要以root 身份去執行

目錄結構


multiMain.sh

#!/bin/bash
#####  the shell should run          #############################
#####  as role:  root                ############################

for((i=5;i<=16;i++));do
  ssh 192.168.157.${i} "yum install expect.x86_64 -y"
done



例項二:

給多臺機器 以  stm 角色  傳送檔案. 並切換到 root 角色去修改這些檔案。

目錄結構:


multiMain.sh : 主程式

suRoot : 提升許可權的指令碼

test.txt : 需要被修改的測試檔案

multiMain.sh 

#!/bin/bash
#####  the shell should run          #############################
#####  as role:  stm                 ############################

for((i=5;i<=16;i++));do
  echo "scp /home/stm/profile 
[email protected]
${i}" # ssh 192.168.157.${i} "yum install expect.x86_64 -y" scp ./test.txt ./suRoot.sh [email protected]${i}:~/ done for((i=5;i<=16;i++));do echo "[email protected]${i}" ssh [email protected]${i} /bin/bash << EOF cd /home/stm source ./suRoot.sh echo 789 >> ./test.txt cat ./test.txt rm -f ./suRoot.sh exit EOF done


suRoot.sh   免輸入提升至root 許可權

#!/usr/bin/expect:/bin/bash
spawn su - root
#-c "cd /home/stm; echo 456 >> ./test.txt"
expect "Password: "
send "12345678\r"
interact


test.txt

123
456


效果:


遇到的問題:

http://serverfault.com/questions/642129/expect-script-error-send-spawn-id-exp4-not-open-while-executing
主要原因 expect 的內容與預期符合