1. 程式人生 > >使用python指令碼備份crontab定時任務

使用python指令碼備份crontab定時任務

近期打算備份下伺服器crontab任務,以防個人失誤,清空定時任務,其實我覺得shell指令碼更簡單,但是想練習下python,決定使用python指令碼進行,前提執行主機做好對其他節點伺服器ssh免祕鑰登入

vi crontab_backup.py

#!/usr/bin/env python
# -*- coding : UTF-8 -*-
# Author : CuiLei
# Date: 2016-06-14
# Filename: crontab_backup.py
# Description: backup crontab , host /root/crontab_backup/

import datetime
import re
import sys
import time
import os

#備份目標
source='/var/spool/cron'
print 'backup files:',source

#備份到的位置
target_dir='/root/crontab_backup/'

dt=datetime.datetime.now()

#開啟iplist檔案
f = open('iplist')
for line in f.readlines():
    #查詢IP
    ip = re.findall(r'((?:\d{1,3}\.){3}\d{1,3})',line)[0]
    print 'backup host: ',ip
	#主機名稱
    host = line[14:].replace(" ","").strip('\n')
	#目錄名稱
    target=target_dir + host + dt.strftime('%Y%m%d%H%M%S')
    print 'backup target: ',target
	#首次執行需要建立目錄
    mk= "mkdir %s" % target_dir
    print 'backup dir: ',mk
	#cp的命令
    cmd="cp -rf %s %s" % (source,target)
	#呼叫命令ssh伺服器執行命令
    process1 = os.popen("/usr/bin/ssh %s %s" % (ip,mk)).read()
	#睡眠1秒
    time.sleep(1)
	#執行備份
    process2 = os.popen("/usr/bin/ssh %s %s" % (ip,cmd)).read()

    if os.system(process2)==0 :
        print 'successfull backup'
    else:
        print 'failed backup'

#iplist檔案格式
vi iplist
192.168.1.154 test01
192.168.1.155 test02