摘要:創(chuàng)業(yè)公司,但也逐漸積累了十多態(tài)服務(wù)器,有時(shí)候因?yàn)橐稽c(diǎn)小疏忽,就導(dǎo)致了十多臺(tái)服務(wù)器返工,剛開始會(huì)使用一臺(tái)一臺(tái)登上去修改,或者一個(gè)一個(gè)上傳,基本上只要發(fā)生一點(diǎn)錯(cuò)誤,就會(huì)花去小半天時(shí)間,這不是最重要的,最重要的是,小半天時(shí)間都在做一件重復(fù)的事鏈接
創(chuàng)業(yè)公司,但也逐漸積累了十多態(tài)服務(wù)器,有時(shí)候因?yàn)橐稽c(diǎn)小疏忽,就導(dǎo)致了十多臺(tái)服務(wù)器返工,剛開始會(huì)使用ssh一臺(tái)一臺(tái)登上去修改,或者scp、sftp一個(gè)一個(gè)上傳,基本上只要發(fā)生一點(diǎn)錯(cuò)誤,就會(huì)花去小半天時(shí)間,這不是最重要的,最重要的是,小半天時(shí)間都在做一件重復(fù)的事:ssh鏈接 -> 找到文件目錄 -> 修改 (或者:scp上傳 -> 查看效果 ......)
時(shí)間久了,就再也不想這樣干了,于是學(xué)習(xí)了python,寫了一段利用scp上傳文件的腳本:
引入包: paramiko
引入服務(wù)器的配置:from config.server import server_data
添加下面的代碼:
#!/usr/bin/python # -*- coding: UTF-8 -*- import paramiko from config.server import server_data # 服務(wù)器配置數(shù)據(jù) 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" # 文件在服務(wù)器中存儲(chǔ)的路徑 print u try: sftp.put("./upload/12124.png", u) # 文件本地存儲(chǔ)路徑 except Exception as e: print "Error: %s" % e pass sftp.close() # 執(zhí)行每個(gè)網(wǎng)站 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()
服務(wù)器配置:
server_data = [
{ "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") }, ] }
];
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/38345.html
摘要:扔在一邊很久了,最近剛好有幾天閑,買了本復(fù)習(xí)一下。這是第一部分和數(shù)據(jù)處理。返回當(dāng)前作用域下的本地變量。這個(gè)更好玩兒,模塊里面包含了異常和一些其他的對(duì)象。庫中變量是一個(gè)保存環(huán)境變量的字典,可以通過訪問字典值得方式獲得一些環(huán)境變量的值。 python扔在一邊很久了,最近剛好有幾天閑,買了本《Head First Python》復(fù)習(xí)一下。 跟python結(jié)緣是因?yàn)榻藽語言的王青老師推薦我們邊...
摘要:前面兩個(gè)期望的采樣我們都熟悉,第一個(gè)期望是從真樣本集里面采,第二個(gè)期望是從生成器的噪聲輸入分布采樣后,再由生成器映射到樣本空間。 Wasserstein GAN進(jìn)展:從weight clipping到gradient penalty,更加先進(jìn)的Lipschitz限制手法前段時(shí)間,Wasserstein ?GAN以其精巧的理論分析、簡單至極的算法實(shí)現(xiàn)、出色的實(shí)驗(yàn)效果,在GAN研究圈內(nèi)掀起了一陣...
閱讀 2701·2023-04-25 19:13
閱讀 4036·2021-09-22 15:34
閱讀 3060·2019-08-30 14:23
閱讀 1468·2019-08-29 17:17
閱讀 1608·2019-08-29 16:05
閱讀 1543·2019-08-29 13:26
閱讀 1222·2019-08-29 13:19
閱讀 559·2019-08-29 13:16