资讯专栏INFORMATION COLUMN

用python跑一边脚本,把数据传到几台服务器的指定位置

ThreeWords / 1823人阅读

摘要:创业公司,但也逐渐积累了十多态服务器,有时候因为一点小疏忽,就导致了十多台服务器返工,刚开始会使用一台一台登上去修改,或者一个一个上传,基本上只要发生一点错误,就会花去小半天时间,这不是最重要的,最重要的是,小半天时间都在做一件重复的事链接

创业公司,但也逐渐积累了十多态服务器,有时候因为一点小疏忽,就导致了十多台服务器返工,刚开始会使用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拾遗(一)

    摘要:扔在一边很久了,最近刚好有几天闲,买了本复习一下。这是第一部分和数据处理。返回当前作用域下的本地变量。这个更好玩儿,模块里面包含了异常和一些其他的对象。库中变量是一个保存环境变量的字典,可以通过访问字典值得方式获得一些环境变量的值。 python扔在一边很久了,最近刚好有几天闲,买了本《Head First Python》复习一下。 跟python结缘是因为教C语言的王青老师推荐我们边...

    2i18ns 评论0 收藏0
  • WGAN最新进展:从weight clipping到gradient penalty

    摘要:前面两个期望的采样我们都熟悉,第一个期望是从真样本集里面采,第二个期望是从生成器的噪声输入分布采样后,再由生成器映射到样本空间。 Wasserstein GAN进展:从weight clipping到gradient penalty,更加先进的Lipschitz限制手法前段时间,Wasserstein  GAN以其精巧的理论分析、简单至极的算法实现、出色的实验效果,在GAN研究圈内掀起了一阵...

    陈江龙 评论0 收藏0

发表评论

0条评论

ThreeWords

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<