用python跑一邊腳本,把數據傳到幾臺服務器的指定位置

創業公司,但也逐漸積累了十多態服務器,有時候由於一點小疏忽,就致使了十多臺服務器返工,剛開始會使用ssh一臺一臺登上去修改,或者scp、sftp一個一個上傳,基本上只要發生一點錯誤,就會花去小半天時間,這不是最重要的,最重要的是,小半天時間都在作一件重複的事:ssh連接 -> 找到文件目錄 -> 修改 (或者:scp上傳 -> 查看效果 ......)python

時間久了,就不再想這樣幹了,因而學習了python,寫了一段利用scp上傳文件的腳本:服務器


  1. 引入包: paramikodom

  2. 引入服務器的配置:from config.server import server_datassh

  3. 添加下面的代碼:學習

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import paramiko

from config.server import server_data # 服務器配置數據

import sys
reload(sys)
sys.setdefaultencoding('utf8')

# 創建單獨的scp連接
def trans (hostname, username, password, port, sites):

    scp = paramiko.Transport((hostname, port))
    scp.connect(username=username, password=password)

    sftp = paramiko.SFTPClient.from_transport(scp)

    for v in sites:
        print v
        u = '/host/sites/' + v['domain'] + '/msites/public/images/12124.png' # 文件在服務器中存儲的路徑
        print u
        try:
            sftp.put('./upload/12124.png', u) # 文件本地存儲路徑
        except Exception as e:
            print "Error: %s" % e
            pass

    sftp.close()

# 執行每一個網站
def main ():

    i = 0
    for data in server_data:
        i = i + 1
        print i
        trans(data['hostname'], data['username'], data['password'], data['port'], data['sites'])

if __name__ == '__main__':
    main()

服務器配置:網站

server_data = [code

{
    'hostname': '', # 須要填寫
    'id': , # 須要填寫
    'username': 'root',
    'port': 22, # 須要填寫
    'password': '', # 須要填寫
    'sites': [
        {
            'name': '百度'.decode('utf-8'),
            'domain': 'baidu.com',
            'alias': 'bd',
            'fallname': '百度'.decode('utf-8')
        },
       {
            'name': '百度'.decode('utf-8'),
            'domain': 'baidu.com',
            'alias': 'bd',
            'fallname': '百度'.decode('utf-8')
        },
        {
            'name': '百度'.decode('utf-8'),
            'domain': 'baidu.com',
            'alias': 'bd',
            'fallname': '百度'.decode('utf-8')
        },
    ]
},
{
    'hostname': '',
    'id': ,
    'username': 'root',
    'port': 22,
    'password': '',
    'sites': [
        {
            'name': '百度'.decode('utf-8'),
            'domain': 'baidu.com',
            'alias': 'bd',
            'fallname': '百度'.decode('utf-8')
        },
       {
            'name': '百度'.decode('utf-8'),
            'domain': 'baidu.com',
            'alias': 'bd',
            'fallname': '百度'.decode('utf-8')
        },
        {
            'name': '百度'.decode('utf-8'),
            'domain': 'baidu.com',
            'alias': 'bd',
            'fallname': '百度'.decode('utf-8')
        },
    ]
}

];server

相關文章
相關標籤/搜索