V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
sznewbee096
V2EX  ›  Python

如何从电脑复制文件到其他多台(20 台电脑左右)并执行文件。

  •  
  •   sznewbee096 · 2019-12-01 22:57:02 +08:00 · 5938 次点击
    这是一个创建于 1817 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现场运维过程中,需要批量复制替换文件并升级,windows 和 linux 都存在,在研究用 python 实现,不过 Paramiko 对应 linux 容易,而 pywinrm 对应的 windows 没有远程复制文件相关函数。求助广大 V 友。

    第 1 条附言  ·  2019-12-02 14:51:05 +08:00
    根据各位 V 友的回复,我简单的进行了一下查询和整理,但是实际方案为验证是否可行,基本如下:
    方案一:python 调用 ansible 模块;很好的支持 linux 集群管理且支持 windows 集群管理;但是 ansible 必须是 V1.7 版本以上支持 windows 管理,不过是需要被管理 windows 集群支持 power shell 和 Management Framework 及 3.0 以上版本(换句话就是 windows server2012 和 windows 10 以上),并存在较多限制,参考 https://blog.csdn.net/wangtaoking1/article/details/78313892。

    方案二:使用 @realpg 的方法:
    net use \\192.168.1.12\ipc$ "password" /user:Administrator
    copy c:\target.exe \\192.168.1.12\c$\Users\Administrator\Desktop\clickme.exe
    psexec \\192.168.1.12 -u Administrator -p password -d -i 0 "c$\Users\Administrator\Desktop\clickme.exe"
    限制条件 pstools 需要安装且目标及 ipc 管道和 admin 管道不能关闭

    方案三: 运用 git 和 SVN 推送和自动更新的功能(我的理解),这些就需要预装 git 和 SVN 客户端和服务端,我只负责协助运维,实际服务器禁止安装 git 和 SVN 等第三方工具。方案适用于具有所有权和完全使用权的服务器管理。

    方案四:运用灰鸽子软件,由于防火墙和杀毒软件不能控制,所以不能使用

    方案五:通过构建域的方式推送,不太懂这种方式,暂时不解释。

    对于第三方模块 fabric, saltstack 还在研究啃文档。再此感谢 V 友建议,后续具体验证后会持续更新。
    31 条回复    2019-12-02 16:04:42 +08:00
    redial39
        1
    redial39  
       2019-12-01 23:08:14 +08:00
    用 git 啊...推命令就完了
    kdsland
        2
    kdsland  
       2019-12-01 23:14:34 +08:00   ❤️ 1
    ansible
    lc7029
        3
    lc7029  
       2019-12-01 23:21:45 +08:00
    灰鸽子。。。
    ClericPy
        4
    ClericPy  
       2019-12-01 23:25:01 +08:00
    ansible, fabric, saltstack ....
    flynaj
        5
    flynaj  
       2019-12-01 23:50:26 +08:00
    文件多的话可以用 syncthing 做同步,写个脚本来等同步好运行。
    cedoo22
        6
    cedoo22  
       2019-12-01 23:59:40 +08:00
    git 吧, 数量不多, 老早之前做自动升级用过,定时任务或者整个 rest 接口触发去服务器拉取指定标签的提交记录, 和当前标签 diff 一下,拉更新文件。
    大概就是这么个思路。临时用可以,主要是方便控制。电脑数量级别要是上升 就要上产品级别的东西了。
    datocp
        7
    datocp  
       2019-12-02 06:44:16 +08:00 via Android
    以前都用 psexec+autoit 实现鼠标自动点击下一步。
    Tink
        8
    Tink  
       2019-12-02 08:17:42 +08:00 via iPhone
    这肯定是 ansible 啊,专门干这个的
    CallMeReznov
        9
    CallMeReznov  
       2019-12-02 09:08:23 +08:00 via Android
    salt
    结束
    Hopetree
        10
    Hopetree  
       2019-12-02 09:18:03 +08:00
    ansible 申请出战:教练,我想吃烤山药
    angryfish
        11
    angryfish  
       2019-12-02 09:21:14 +08:00
    二十台而已,一台台拷贝啊,多大的事。
    tankren
        12
    tankren  
       2019-12-02 09:26:17 +08:00
    没有加域?
    sznewbee096
        13
    sznewbee096  
    OP
       2019-12-02 09:54:30 +08:00
    @angryfish 重复性的工作本来想交给程序的。况且更新还不止一次!!
    realpg
        14
    realpg  
       2019-12-02 10:02:53 +08:00
    梦回 2002 年

    net use \\192.168.1.12\ipc "password" /user:Administrator
    copy c:\target.exe \\192.168.1.12\c$\Users\Administrator\Desktop\clickme.exe
    psexec \\192.168.1.12 -u Administrator -p password -d -i 0 "c$\Users\Administrator\Desktop\clickme.exe"

    pstools 需要安装
    目标及 ipc 管道和 admin 管道不能关闭
    sznewbee096
        15
    sznewbee096  
    OP
       2019-12-02 10:11:36 +08:00
    @redial39 git 怎么用,git 主要不是连接 github 或者项目库文件管理?
    sznewbee096
        16
    sznewbee096  
    OP
       2019-12-02 10:13:28 +08:00
    @lc7029 感谢,灰鸽子不是容易被杀毒软件和防火墙隔离。属于运维中的服务器有点难。
    sznewbee096
        17
    sznewbee096  
    OP
       2019-12-02 10:18:32 +08:00
    @kdsland @Hopetree @Tink 感谢 V 友,ansible 模块主要是在 windows 向 linux 使用比较方便,Paramiko 第三方模块也具有同样的功能,windows 系统之间没有相应的模块调用可以做到复制粘贴远程运行文件。
    sznewbee096
        18
    sznewbee096  
    OP
       2019-12-02 10:23:09 +08:00
    @realpg 感谢!这个属于 VB 的 bat 脚本,这个也是一个解决 windows 之间复制执行文件的方案,如果没有找到合适的,将采用这种方法。
    lc7029
        19
    lc7029  
       2019-12-02 10:30:55 +08:00
    @sznewbee096 白名单或不装杀毒就好了
    qistchan
        20
    qistchan  
       2019-12-02 10:32:38 +08:00
    国庆节部署一个软件客户端,2000 多台机器 就用的 psexec 远程执行一个 bat
    chinazz
        21
    chinazz  
       2019-12-02 10:42:42 +08:00
    ansible
    realpg
        22
    realpg  
       2019-12-02 11:28:22 +08:00 via Android
    @sznewbee096 ipc 后面有个美元符号漏了
    wiewiewie
        23
    wiewiewie  
       2019-12-02 11:55:04 +08:00
    windows 和 linux 都存在, 20 多台 ,SVN 触发钩子, 同步与执行。唯一就是 第 1 次安装累点。
    annielong
        24
    annielong  
       2019-12-02 12:55:27 +08:00
    从主端到多端,有些麻烦,但是从多端到主端就比较简单,随便代码就能实现,就是每个端都要运行比较麻烦,不过也可以做计划来启动
    pi1ot
        25
    pi1ot  
       2019-12-02 12:57:49 +08:00
    我以前的土办法是每台 client 定时到 master 用 rsync 拉脚本,执行完后删除
    wangyzj
        26
    wangyzj  
       2019-12-02 13:41:09 +08:00
    ansible or git
    luozic
        27
    luozic  
       2019-12-02 13:48:44 +08:00
    ansible ; 有加入域也可以使用域来给客户机推文件。
    sznewbee096
        28
    sznewbee096  
    OP
       2019-12-02 14:11:22 +08:00
    @wiewiewie 通过 SVN 钩子能实现,但是服务器非本公司所有,所以这种方案还是不采用了。 谢谢。
    harrison0124
        29
    harrison0124  
       2019-12-02 14:26:16 +08:00
    就 20 几台,U 盘啊,这么方便
    sznewbee096
        30
    sznewbee096  
    OP
       2019-12-02 14:37:01 +08:00
    @harrison0124 远程管理,不能进机房,且以后在不断拓展。
    coolloves
        31
    coolloves  
       2019-12-02 16:04:42 +08:00
    开个简易 http 服务器,就不用专门装 git svn 之类
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1955 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:16 · PVG 00:16 · LAX 08:16 · JFK 11:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.