ssh command一台主机同时给多台主机远程操作

机器列表:host0,host1, host2,host3,host4,host5

实现功能:在host0上面对其他机器执行指令
1、实现host0可以免密码登录host1-host5,这个可以自行百度
2、在host0的home目录下新建文件.scmd.sh如下:

#!/bin/sh

paserArgs()
{
    OLD_IFS="$IFS"
    IFS=","
    arr=($1)
    IFS="$OLD_IFS"
    hosts=()

    for s in ${arr[@]}
    do
        if [[ $s =~ "-" ]]
        then
        IFS="-"
        arr1=($s)
        IFS="$OLD_IFS"
        if [ ${#arr1[@]} == 2 ]; then
            prix0=`echo ${arr1[0]} | grep '.*[a-zA-Z]' -o`
            end0=`echo ${arr1[0]} | grep '[0-9]*$' -o`
            prix1=`echo ${arr1[1]} | grep '.*[a-zA-Z]' -o`
            end1=`echo ${arr1[1]} | grep '[0-9]*$' -o`

            if [ $end0 -lt $end1 ]; then
               max=$end1
               min=$end0
            else
                max=$end0
                min=$end1
            fi
            for i in `seq ${min} ${max}`
            do
                hosts+=($prix0${i})
            done
        fi
        else
            hosts+=($s)
        fi
    done
}

doCommand()
{
    for host in ${hosts[@]}
        do
            echo ""
            echo HOST $host
            ssh $host "$@"
        done
    return 0
}

if [ $# -lt 1 ]
then
    echo "$0 cmd"
    exit
fi
paserArgs "$@"
doCommand "$2"
echo "return from scmd"

3、在host0的home目录下的.bashrc文件加入如下代码

alias scmd="sh ~/.scmd.sh" 

4、source是的.bashrc生效

[work@host0 ~]$source .bashrc

5、所有东西都配置好,大功告成!下面就是测试:scmd命令接收两个参数,第一个是机器名,第二个是操作的命令。这里第一个参数机器列表可以是连续的或者混合型,什么意思看下面

###host1 上执行'ls ~',列出host1的home文件
[work@host0 ~]$scmd host1 'ls ~'

###host1 和host2上执行
[work@host0 ~]$scmd host1,host2 'ls ~'

###host1、host2、host3和host5上执行
[work@host0 ~]$scmd host1-host3,host5 'ls ~'

###host1、host2、host4和host5上执行,创建文件夹test
[work@host0 ~]$scmd host1-host2,host4-host5 'mkdir ~/test'
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值