V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
spencerqiu
V2EX  ›  程序员

如何在 OS X 下 SSH 登录服务器时,对多台服务器操作同一命令?

  •  
  •   spencerqiu · 2015-09-13 10:39:12 +08:00 · 4098 次点击
    这是一个创建于 3352 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如 10 台服务器,都只要执行一条简单的 service nginx restart ,操作本身简单,但是要一台台登录就累死人了,在网上找了下, Windows 下貌似可以用 X-Shell 的一个小功能实现, OS X 下有啥办法没?
    26 条回复    2015-09-15 22:38:05 +08:00
    gaitana
        1
    gaitana  
       2015-09-13 10:43:06 +08:00 via Android
    可以远程执行 shell
    whthomas
        2
    whthomas  
       2015-09-13 10:52:24 +08:00
    一般这种批量操作都是机械化的步骤,是不是可以考虑用 Python 的 fabric 之类的库,做个脚本?
    evilangel
        3
    evilangel  
       2015-09-13 10:54:51 +08:00
    运维工程师告诉你 SecureCRT 一条命令发送到所有标签是最简单便捷的方法。
    introom
        4
    introom  
       2015-09-13 10:58:49 +08:00 via Android
    最近比较火的是 ansible ,我用过,很方便。
    当然,你也可以直接用 pssh
    Tink
        5
    Tink  
       2015-09-13 11:03:19 +08:00 via iPhone
    Fabric 可以啊
    fangpeishi
        6
    fangpeishi  
       2015-09-13 11:04:34 +08:00
    cat host.list |xargs -I {} ssh USER@{} 'COMMAND'
    常常有这种操作,用 pssh 吧。
    libo26
        7
    libo26  
       2015-09-13 11:55:11 +08:00 via iPhone
    自己写个脚本呗
    knightdf
        8
    knightdf  
       2015-09-13 12:02:57 +08:00
    iterm, Broadcast input, 或者运维工具 Fabric
    Scholer
        9
    Scholer  
       2015-09-13 12:10:39 +08:00
    ansible 是最方便的
    jhaohai
        10
    jhaohai  
       2015-09-13 12:43:36 +08:00 via iPhone
    ansible
    aheadlead
        11
    aheadlead  
       2015-09-13 12:43:58 +08:00 via iPhone
    ansible
    realityone
        12
    realityone  
       2015-09-13 12:49:49 +08:00
    昨天看见了一个 rir
    id4alex
        13
    id4alex  
       2015-09-13 12:52:34 +08:00
    shell 里面的一段代码


    ###所有节点修改 hostname####
    [root@localhost ~]# for i in `grep node /etc/hosts | awk '{print $2}'`; do ssh -o StrictHostKeyChecking=no $i "sed -i '/HOSTNAME=/d' /etc/sysconfig/network;echo \"HOSTNAME=$i\" >>/etc/sysconfig/network"; done;
    dotpig
        14
    dotpig  
       2015-09-13 13:02:56 +08:00
    SSH to many hosts and broadcast input with iTerm
    https://coderwall.com/p/x9ylbw/ssh-to-many-hosts-and-broadcast-input-with-iterm

    一个 AppleScript 搞定。
    dorentus
        15
    dorentus  
       2015-09-13 13:16:14 +08:00 via iPad
    ssh root@host service nginx restart 再加个循环不就好了
    wangxiaomu
        16
    wangxiaomu  
       2015-09-13 13:23:31 +08:00
    @fangpeishi 简单有效
    lins05
        17
    lins05  
       2015-09-13 13:29:30 +08:00
    偶尔用一下写个 shell 脚本就行, 经常执行类似任务可以用 ansible 或者 fabric
    chilaoqi
        18
    chilaoqi  
       2015-09-13 13:38:13 +08:00
    ansible , fabric , saltstack 这类的 toolkit

    rundeck , fit2cloud 这类的运维平台
    akige
        19
    akige  
       2015-09-13 13:59:08 +08:00
    必须 ansible 啊
    pynix
        20
    pynix  
       2015-09-13 17:37:01 +08:00
    你需要自动化运维工具。。
    Ixizi
        21
    Ixizi  
       2015-09-13 18:06:11 +08:00 via iPhone
    你是不是搞运维的?
    Lumuy
        22
    Lumuy  
       2015-09-13 23:01:22 +08:00 via Android
    fabric
    tonic
        23
    tonic  
       2015-09-14 12:24:07 +08:00
    csshX 可以试试 ~_~
    xlvecle
        24
    xlvecle  
       2015-09-14 14:29:56 +08:00
    polysh, pdsh ,pssh 等,楼主 Google 一下就明白了.
    nekoyaki
        25
    nekoyaki  
       2015-09-14 15:49:26 +08:00
    难道不是……
    直接 ssh username@host 'command'就行吗?
    ddou
        26
    ddou  
       2015-09-15 22:38:05 +08:00
    @introom 简单重复的事情交给 ansible 就可以了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   998 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:33 · PVG 04:33 · LAX 12:33 · JFK 15:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.