摘要:创业公司,但也逐渐积累了十多态服务器,有时候因为一点小疏忽,就导致了十多台服务器返工,刚开始会使用一台一台登上去修改,或者一个一个上传,基本上只要发生一点错误,就会花去小半天时间,这不是最重要的,最重要的是,小半天时间都在做一件重复的事链接
创业公司,但也逐渐积累了十多态服务器,有时候因为一点小疏忽,就导致了十多台服务器返工,刚开始会使用ssh一台一台登上去修改,或者scp、sftp一个一个上传,基本上只要发生一点错误,就会花去小半天时间,这不是最重要的,最重要的是,小半天时间都在做一件重复的事:ssh链接 -> 找到文件目录 -> 修改 (或者:scp上传 -> 查看效果 ......)
时间久了,就再也不想这样干了,于是学习了python,写了一段利用scp上传文件的脚本:
引入包: paramiko
引入服务器的配置:from config.server import server_data
添加下面的代码:
#!/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 = [
{ "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") }, ] }
];
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/38345.html
摘要:扔在一边很久了,最近刚好有几天闲,买了本复习一下。这是第一部分和数据处理。返回当前作用域下的本地变量。这个更好玩儿,模块里面包含了异常和一些其他的对象。库中变量是一个保存环境变量的字典,可以通过访问字典值得方式获得一些环境变量的值。 python扔在一边很久了,最近刚好有几天闲,买了本《Head First Python》复习一下。 跟python结缘是因为教C语言的王青老师推荐我们边...
摘要:前面两个期望的采样我们都熟悉,第一个期望是从真样本集里面采,第二个期望是从生成器的噪声输入分布采样后,再由生成器映射到样本空间。 Wasserstein GAN进展:从weight clipping到gradient penalty,更加先进的Lipschitz限制手法前段时间,Wasserstein GAN以其精巧的理论分析、简单至极的算法实现、出色的实验效果,在GAN研究圈内掀起了一阵...
阅读 2621·2023-04-25 19:13
阅读 3884·2021-09-22 15:34
阅读 2989·2019-08-30 14:23
阅读 1433·2019-08-29 17:17
阅读 1556·2019-08-29 16:05
阅读 1505·2019-08-29 13:26
阅读 1139·2019-08-29 13:19
阅读 467·2019-08-29 13:16