美文网首页
一次向多台Linux机器scp传输(水)

一次向多台Linux机器scp传输(水)

作者: 悠扬前奏 | 来源:发表于2019-06-22 23:56 被阅读0次

    Spark安装和运行时,各种配置文件需要向所有服务器发送,一个个执行SCP肯定不够优雅,做个shell解决这个问题:

    #!/bin/bash
    if [ "$#" -ne 2 ] ; then
        echo "USAGE: $0 -f cmd"
        exit 1
    fi
    # set server.list as parameter if nessesary
    file_name='server.list'
    cwd=$(pwd)
    cd $cwd
    serverlist_file="$cwd/$file_name"
    
    if [ ! -e $serverlist_file ] ; then
        echo '$file_name not exist'
        exit 0;
    fi
    
    while read line
    do
        if [ -n "$line" ] ; then
            echo "SCP --->" $line "<---"
            if [[ $line =~ /$ ]] ; then
                scp -r $1 root@$line:$2
            else
                scp $1 root@$line:$2
            fi
            if [ $? -eq 0 ] ; then
                echo "scp $1 to root@$line:$2 done!"
            else
                echo "error: " $?
            fi
        fi
    done < $serverlist_file 
    

    保存名为scpAll.sh

    在相同的目录下面建一个server.list文件夹,写入服务器列表:

    hadoop01
    hadoop02
    hadoop03
    

    然后把shAll.sh变为可执行文件:

    chmod -x ./scpAll.sh
    

    然后就可以同时向所有服务器做scp传输了:

    ./scpAll.sh './scpAll.sh' '~/scpAll.sh'
    

    其实按照本文的做法,最后应该会需要输密码的,也很麻烦,我在spark安装部署的时候已经相互添加了ssh验证了,可以参考那篇文章,这里不做赘述。

    相关文章

      网友评论

          本文标题:一次向多台Linux机器scp传输(水)

          本文链接:https://www.haomeiwen.com/subject/popbqctx.html