天天看點

Linux下通過crontab及expect實作自動化處理

為實作每天定時從其他伺服器上複制檔案到本地,需要使用crontab建立定時任務,并通過scp進行Linux之間的檔案複制。在複制檔案時,可能需要輸入目标伺服器上的密碼,通過expect即可實作。

檢查并安裝expect及tcl

說明:​​expect​​指令行工具,可在互動式操作的場景下實作複雜的自動化處理功能。expect依賴tcl。

下載下傳expect和tcl

expect和tcl的版本及具體下載下傳位址:

安裝tcl

解壓tar.gz檔案,然後進入解壓後tcl目錄(假設為:/usr/src/tcl8.4.19)。

1

2

3

4

5

安裝expect

6

7

實作功能:在遠端資料庫上執行expdp導出dmp檔案,并複制到本地指定位置。因每天都會執行,需要生成有日期字尾的檔案。

8

9

10

11

12

13

14

15

16

17

18

19

20

21

儲存以上檔案為bakbash(假設位于:/usr/local/bin/目錄),然後用chmod指令設定可執行權限:

至此,即完成了任務配置及腳本自動處理。

在/bin/bash中使用expect,可采用如下方式:

Crontab 編輯後,并不需要restart。

報錯資訊:/bin/sh: bakbash: command not found,這是因為之前将bakbash腳本放在了其他目錄下,導緻bash腳本無法找到該指令,将檔案轉移到/usr/local/bin/目錄後, 即可找到。另外,在bakbash中使用到的 expdp, expect指令,都需要有明确的路徑字首,否則也會找不到指令。這是因為crontab在執行的時候隻會定義少數環境變量而不是繼承使用者shell環境中的環境變量。

繼續閱讀