天天看點

expect實作多台主機執行同樣操作

      下月有一個系統上線23台主機,虛拟機模闆不帶應用使用者,是以隻能手動來一個一個建立,于是想到了寫一個小腳本解脫重複勞動的痛苦。

整個腳本分為腳本和配置檔案:

配置檔案如下:

1

2

3

4

5

<code>username=root</code>

<code>password=1q2w3e</code>

<code>ip1=192.168.10.129</code>

<code>ip2=192.168.10.130</code>

<code>ip3=192.168.10.128</code>

腳本檔案如下:

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<code>UNAME=`</code><code>cat</code> <code>.</code><code>/sysinfo</code><code>.conf| </code><code>grep</code> <code>username|</code><code>awk</code> <code>-F </code><code>'='</code> <code>'{print $2}'</code><code>`</code>

<code>PASSWD=`</code><code>cat</code> <code>.</code><code>/sysinfo</code><code>.conf| </code><code>grep</code> <code>password|</code><code>awk</code> <code>-F </code><code>'='</code> <code>'{print $2}'</code><code>`</code>

<code>cat</code> <code>.</code><code>/sysinfo</code><code>.conf|</code><code>grep</code> <code>ip|</code><code>awk</code> <code>-F </code><code>'='</code> <code>'{print $2}'</code> <code>| </code><code>while</code> <code>read</code> <code>IP </code>

<code>do</code>

<code>ping</code> <code>-c 2 $IP &gt;</code><code>/dev/null</code> <code>2&gt;&amp;1</code>

<code>conn_check=$?</code>

<code>if</code> <code>[ $conn_check -</code><code>eq</code> <code>0 ]; </code><code>then</code>

<code>expect &lt;&lt; EOF</code>

<code>spawn </code><code>ssh</code>  <code>$UNAME@$IP</code>

<code>expect </code><code>"*password:"</code> <code>{ send </code><code>"$PASSWD\r"</code> <code>}</code>

<code>expect  </code><code>"*]#"</code> <code>{ send </code><code>"lvcreate -L 500M -n lv_test system\r"</code> <code>}</code>

<code>expect  </code><code>"*]#"</code> <code>{ send </code><code>"mkdir /test\r"</code> <code>}</code>

<code>expect  </code><code>"*]#"</code> <code>{ send </code><code>"mkfs.ext4 /dev/system/lv_test\r"</code> <code>}</code>

<code>expect  </code><code>"*]#"</code> <code>{ send </code><code>"mount /dev/system/lv_test /test\r"</code> <code>}</code>

<code>expect  </code><code>"*]#"</code> <code>{ send </code><code>"exit\r"</code> <code>}</code>

<code>EOF</code>

<code>elif</code> <code>[ -s .</code><code>/error</code><code>.log ]; </code><code>then</code>

<code>echo</code> <code>"`date`  The hostmachine $IP is not connected!"</code><code>&gt;&gt;.</code><code>/error</code><code>.log</code>

<code>else</code>

<code>echo</code> <code>"`date`  The hostmachine $IP is not connected!"</code><code>&gt;.</code><code>/error</code><code>.log</code>

<code>fi</code>

<code>done</code>

備注:裡面的IP為案例IP并非我主機實際IP

本文轉自 yuri_cto 51CTO部落格,原文連結:http://blog.51cto.com/laobaiv1/1978665,如需轉載請自行聯系原作者

繼續閱讀