V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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 · Dec 1, 2019 · 6827 views
    This topic created in 2349 days ago, the information mentioned may be changed or developed.

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

    Supplement 1  ·  Dec 2, 2019
    根据各位 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 replies    2019-12-02 16:04:42 +08:00
    redial39
        1
    redial39  
       Dec 1, 2019
    用 git 啊...推命令就完了
    kdsland
        2
    kdsland  
       Dec 1, 2019   ❤️ 1
    ansible
    lc7029
        3
    lc7029  
       Dec 1, 2019
    灰鸽子。。。
    ClericPy
        4
    ClericPy  
       Dec 1, 2019
    ansible, fabric, saltstack ....
    flynaj
        5
    flynaj  
       Dec 1, 2019
    文件多的话可以用 syncthing 做同步,写个脚本来等同步好运行。
    dr1q65MfKFKHnJr6
        6
    dr1q65MfKFKHnJr6  
       Dec 1, 2019
    git 吧, 数量不多, 老早之前做自动升级用过,定时任务或者整个 rest 接口触发去服务器拉取指定标签的提交记录, 和当前标签 diff 一下,拉更新文件。
    大概就是这么个思路。临时用可以,主要是方便控制。电脑数量级别要是上升 就要上产品级别的东西了。
    datocp
        7
    datocp  
       Dec 2, 2019 via Android
    以前都用 psexec+autoit 实现鼠标自动点击下一步。
    Tink
        8
    Tink  
    PRO
       Dec 2, 2019 via iPhone
    这肯定是 ansible 啊,专门干这个的
    CallMeReznov
        9
    CallMeReznov  
       Dec 2, 2019 via Android
    salt
    结束
    Hopetree
        10
    Hopetree  
       Dec 2, 2019
    ansible 申请出战:教练,我想吃烤山药
    GBdG6clg2Jy17ua5
        11
    GBdG6clg2Jy17ua5  
       Dec 2, 2019
    二十台而已,一台台拷贝啊,多大的事。
    tankren
        12
    tankren  
       Dec 2, 2019
    没有加域?
    sznewbee096
        13
    sznewbee096  
    OP
       Dec 2, 2019
    @angryfish 重复性的工作本来想交给程序的。况且更新还不止一次!!
    realpg
        14
    realpg  
    PRO
       Dec 2, 2019
    梦回 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
       Dec 2, 2019
    @redial39 git 怎么用,git 主要不是连接 github 或者项目库文件管理?
    sznewbee096
        16
    sznewbee096  
    OP
       Dec 2, 2019
    @lc7029 感谢,灰鸽子不是容易被杀毒软件和防火墙隔离。属于运维中的服务器有点难。
    sznewbee096
        17
    sznewbee096  
    OP
       Dec 2, 2019
    @kdsland @Hopetree @Tink 感谢 V 友,ansible 模块主要是在 windows 向 linux 使用比较方便,Paramiko 第三方模块也具有同样的功能,windows 系统之间没有相应的模块调用可以做到复制粘贴远程运行文件。
    sznewbee096
        18
    sznewbee096  
    OP
       Dec 2, 2019
    @realpg 感谢!这个属于 VB 的 bat 脚本,这个也是一个解决 windows 之间复制执行文件的方案,如果没有找到合适的,将采用这种方法。
    lc7029
        19
    lc7029  
       Dec 2, 2019
    @sznewbee096 白名单或不装杀毒就好了
    qistchan
        20
    qistchan  
       Dec 2, 2019
    国庆节部署一个软件客户端,2000 多台机器 就用的 psexec 远程执行一个 bat
    chinazz
        21
    chinazz  
       Dec 2, 2019
    ansible
    realpg
        22
    realpg  
    PRO
       Dec 2, 2019 via Android
    @sznewbee096 ipc 后面有个美元符号漏了
    wiewiewie
        23
    wiewiewie  
       Dec 2, 2019
    windows 和 linux 都存在, 20 多台 ,SVN 触发钩子, 同步与执行。唯一就是 第 1 次安装累点。
    annielong
        24
    annielong  
       Dec 2, 2019
    从主端到多端,有些麻烦,但是从多端到主端就比较简单,随便代码就能实现,就是每个端都要运行比较麻烦,不过也可以做计划来启动
    pi1ot
        25
    pi1ot  
       Dec 2, 2019
    我以前的土办法是每台 client 定时到 master 用 rsync 拉脚本,执行完后删除
    wangyzj
        26
    wangyzj  
       Dec 2, 2019
    ansible or git
    luozic
        27
    luozic  
       Dec 2, 2019
    ansible ; 有加入域也可以使用域来给客户机推文件。
    sznewbee096
        28
    sznewbee096  
    OP
       Dec 2, 2019
    @wiewiewie 通过 SVN 钩子能实现,但是服务器非本公司所有,所以这种方案还是不采用了。 谢谢。
    harrison0124
        29
    harrison0124  
       Dec 2, 2019
    就 20 几台,U 盘啊,这么方便
    sznewbee096
        30
    sznewbee096  
    OP
       Dec 2, 2019
    @harrison0124 远程管理,不能进机房,且以后在不断拓展。
    sparkssssssss
        31
    sparkssssssss  
       Dec 2, 2019
    开个简易 http 服务器,就不用专门装 git svn 之类
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3481 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 86ms · UTC 10:55 · PVG 18:55 · LAX 03:55 · JFK 06:55
    ♥ Do have faith in what you're doing.