Linux_Shell 利用ssh, expect 在多個機器上執行指令
阿新 • • 發佈:2019-01-03
相關的基礎指令介紹
基礎介紹文件
示例一:
多臺機器上安裝軟體, 指令碼需要以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 的內容與預期符合