創業公司,但也逐漸積累了十多態服務器,有時候由於一點小疏忽,就致使了十多臺服務器返工,剛開始會使用ssh一臺一臺登上去修改,或者scp、sftp一個一個上傳,基本上只要發生一點錯誤,就會花去小半天時間,這不是最重要的,最重要的是,小半天時間都在作一件重複的事:ssh連接 -> 找到文件目錄 -> 修改 (或者:scp上傳 -> 查看效果 ......)python
時間久了,就不再想這樣幹了,因而學習了python,寫了一段利用scp上傳文件的腳本:服務器
引入包: paramikodom
引入服務器的配置:from config.server import server_datassh
添加下面的代碼:學習
#!/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