zoukankan      html  css  js  c++  java
  • 批量分发

    ssh两种用法
    • 远程连接主机
    • 不连接过去,只是执行命令
    ssh用法:
    -p加端口,默认22可以省略
    @前面为用户名,不指定为当前用户
    @后面为要连接的服务器的IP
     
    (1)[root@backup .ssh]# ssh -p21987 hp@10.69.112.78
      The authenticity of host '[10.69.112.78]:21987 ([10.69.112.78]:21987)' can't be established.
      RSA key fingerprint is ae:b5:46:d4:ef:f0:82:3d:ab:0d:dd:59:9c:70:38:92.
      Are you sure you want to continue connecting (yes/no)? yes
      Warning: Permanently added '[10.69.112.78]:21987' (RSA) to the list of known hosts.
          hp@10.69.112.78's password: 
      Last login: Wed Oct 19 16:18:44 2016 from 10.69.112.77
     
    (2)[root@backup ~]# ssh -p21987 hp@10.69.112.78 /sbin/ifconfig eth2
         hp@10.69.112.78's password: 
      eth2      Link encap:Ethernet  HWaddr 92:D5:6C:92:BA:C0  
                inet addr:10.69.112.78  Bcast:10.69.112.255  Mask:255.255.255.0
                inet6 addr: fe80::90d5:6cff:fe92:bac0/64 Scope:Link
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                RX packets:234774 errors:0 dropped:0 overruns:0 frame:0
                TX packets:196553 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0 
                RX bytes:27878853 (26.5 MiB)  TX bytes:15731641 (15.0 MiB)
    ssh小结
    1 切换到别的机器上 ssh -p21987 user@ip
    2 到其他机器上执行命令(不会切到机器上)ssh -p21987 user@ip 命令(全路径)
    3 当第一次ssh连接的时候,本地会产生一个密钥文件~/.ssh/known_hosts
     
    ssh配置文件优化:

    Port 21987
    Protocol 2
    SyslogFacility AUTHPRIV
    PermitRootLogin no
    PasswordAuthentication yes
    ChallengeResponseAuthentication no
    GSSAPIAuthentication no
    GSSAPICleanupCredentials yes
    UsePAM yes
    AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
    AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
    AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
    AcceptEnv XMODIFIERS
    X11Forwarding yes
    UseDNS no
    Subsystem sftp /usr/libexec/openssh/sftp-server

     
    scp -P21987 -r -p /etc/ hp@10.69.112.78:/tmp/
    -r 递归
    -p保持属性
    rsync -avz -e 'ssh -p 21987' /etc hp@10.69.112.78:/tmp
     
    批量分发
    [root@backup tmp]# sftp -oPort=21987 hp@10.69.112.78
    Connecting to 10.69.112.78...
    hp@10.69.112.78's password: 
    sftp> put /etc/passwd
    Uploading /etc/passwd to /home/hp/passwd
    /etc/passwd                                                                                        100% 1072     1.1KB/s   00:00    
     
    scp小结:
    1 scp是加密的远程拷贝,而cp仅为本地拷贝
    2 可以把数据从一台机器推送到另一台机器,也可以从其他服务器把数据拉回来
    3 每次都是全量完整拷贝,效率不高,适合第一次拷贝,如果需要增量拷贝,用rsync
     
    [root@nfs-server ~]# useradd oldboy
    [root@nfs-server ~]# echo centos | passwd --stdin oldboy
    #生成密钥对
    [root@nfs-server ~]# ssh-keygen -t dsa
    Generating public/private dsa key pair.
    Enter file in which to save the key (/root/.ssh/id_dsa): 
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_dsa.
    Your public key has been saved in /root/.ssh/id_dsa.pub.
    The key fingerprint is:
    eb:07:16:62:44:c6:e1:d7:00:5d:9d:d7:31:f3:31:fe root@nfs-server
    The key's randomart image is:
    +--[ DSA 1024]----+
    |     o=+.... . B.|
    |     oo .o  o o B|
    |     .. . .  . ..|
    |      o..       .|
    |     . .S.      E|
    |        o.       |
    |       ...       |
    |       .  .      |
    |        ..       |
    +-----------------+
    #分发公钥,把10.69.112.78上的id_dsa.pub放到10.69.112.133下的/home/oldboy/.ssh/authorized_keys
    [root@nfs-server ~]# ssh-copy-id -i .ssh/id_dsa.pub "-p 21987 oldboy@10.69.112.133"
     
    [root@nfs-server ~]# scp -P21987 /etc/hosts oldboy@10.69.112.133:~hosts  
     
    authorized_keys权限600

    echo 'oldboy ALL = (ALL) NOPASSWD:/usr/bin/rsync' >>/etc/sudoers

    visudo -c #检查语法

    78分发机

    10.69.213.78

    10.69.213.133

    10.69.213.134

    现在想从133 和144上ssh连接78

    在78上把私钥发送到133和134上

    scp -P21987 .ssh/id_dsa oldboy@10.69.112.133:~/.ssh

    scp -P21987 .ssh/id_dsa oldboy@10.69.112.134:~/.ssh

    在78上把公钥替换authorized_keys

    ssh-copy-id -i .ssh/id_dsa.pub "-p 21987 oldboy@10.69.112.78"

    A想免密码连接B,就把A上的公钥发送到B上,B上显示的是authorized_keys,需要600权限

    批量分发文件

    (1)78上的hosts文件分发到133、134上oldboy家目录下

    #!/bin/bash
    . /etc/init.d/functions
    if [ $# -ne 1 ]
    then
    echo "USAGE:$0 FILAENAMEA"
    exit 1
    fi
    for n in 133 134
    do
    scp -P21987 -rp $1 oldboy@10.69.112.$n:~ &>/dev/null
    if [ $? -eq 0 ]
    then
    action "$n is ok" /bin/true
    else
    action "$n is fail" /bin/false
    fi
    done

    (2)78上hosts文件分发到133、134的/etc/下

    提权分发,不想用root分发

    echo "oldboy ALL = (ALL) NOPASSWD:/usr/bin/rsync" >>/etc/sudoers

    visudo -c

    #!/bin/bash
    . /etc/init.d/functions
    if [ $# -ne 2 ]
    then
    echo "USAGE:$0 FileName RemoteDir"
    exit 1
    fi
    for n in 133 134
    do
    scp -P21987 -rp $1 oldboy@10.69.112.$n:~ &>/dev/null
    ssh -p21987 -t oldboy@10.69.112.$n sudo rsync $1 $2
    if [ $? -eq 0 ]
    then
    action "$n is ok" /bin/true
    else
    action "$n is fail" /bin/false
    fi
    done

    每分钟定时分发hosts文件到所有机器上,并把分发失败的机器信息邮件发送

  • 相关阅读:
    《Real Time 3D Terrain Engines Using C++ And DirectX9》(实时地形引擎)随书源码
    (转)ogreUML类图
    (转)导弹跟踪算法
    转:正则表达式语法
    读取数据
    Python lambda用法及其与def的区别
    转Vb6.0安装失败解决办法,完全卸载VB(提高班里win7没装上VB的可以看看,我实验成功了)
    vb imagelist 作用
    二叉树的实现
    转:Python语言编程学习资料(电子书+视频教程)下载汇总:
  • 原文地址:https://www.cnblogs.com/hongpeng0209/p/5979205.html
Copyright © 2011-2022 走看看