Ubuntuサーバが複数のサーバに同時にファイルスクリプトをアップロード

2929 ワード

  • server0:192.168.1.10    サービス側 
  • server1:192.168.1.11    クライアント
  • サーバ間キーの生成
    # ssh-keygen //         
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    e0:f6:59:eb:f7:a6:e3:2f:16:39:a2:14:61:31:4a:1f root@LinServ-1

    ssh-keygen RSAとDSAの2つの鍵を含む認証鍵を生成、管理、および変換するために使用される.鍵タイプは-tオプションで指定できます.指定されていない場合、デフォルトではSSH-2用のRSAキーが生成されます.
     
    リモート・サーバへのキー・ファイルのコピー
    ssh-copy-id -i /root/.ssh/id_rsa 192.168.1.11
    
    0
    The authenticity of host '192.168.1.11 (192.168.1.11)' can't be established.
    RSA key fingerprint is 6e:34:d4:8c:fb:72:72:3a:49:7a:14:23:20:59:ea:28.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.1.11' (RSA) to the list of known hosts.
    [email protected]'s password: (  192.168.1.11 root  )
    Now try logging into the machine, with "ssh '192.168.2.11'", and check in:
    
      .ssh/authorized_keys
    
    to make sure we haven't added extra keys that you weren't expecting.
    
    

     
    ssh-copy-id コマンドは、ローカルのssh公開鍵ファイルをリモートホストに対応するアカウントにインストールできます.
     
    スクリプト#スクリプト#
    #!/bin/bash
    
    while getopts f: OPT;
    do
    	case $OPT in
    		f|+f)
    			files="$OPTARG $files"
    			;;
    		*)
    			echo "usage: `basename $0` [-f hostfile] <from> <to>"
    			exit 2
    	esac
    done
    shift `expr $OPTIND - 1`
    
    if [ "" = "$files" ];
    then
    	echo "usage: `basename $0` [-f hostfile] <from> <to>"
    	exit
    fi
    
    for file in $files
    do
    	if [ ! -f "$file" ];
    	then
    		echo "no hostlist file:$file"
    		exit
    fi
    hosts="$hosts `cat $file`"
    done
    
    for host in $hosts;
    do
    	echo "do $host"
    	scp $1 root@$host:$2
    done

    以上のスクリプトの内容をremotecopy.shとして保存します.
     
    ホストリストファイルの作成
    vim hostlist
    
    192.168.1.11

    各行にIPアドレスを書いて保存します.
     
    サービス側192.168.1.0でスクリプトを実行
    ./remotecopy.sh -f /usr/local/hostlist /usr/local/test /usr/local/

     
  • /usr/local/hostlist   ホストリストファイルパス
  • /usr/local/test   転送が必要なファイル
  • /usr/local/   クライアントへの送信位置
  •  GOOD LUCK! わかりませんが私密にお願いします