jason0401 发表于 2018-8-29 08:37:52

shell批量多台服务器数据copy


[*]  实验服务器两台:
  192.168.77.189
  192.168.77.190
[*]  服务器免密钥登录设置:
  # 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>  Your public key has been saved in /root/.ssh/id_rsa.pub.
  The key fingerprint is:
  95:cf:19:a5:ff:d0:bc:80:f5:de:5a:4c:b5:63:ae:c6 root@192_168_77_189
  The key's randomart image is:
  +--[ RSA 2048]----+
  |            .|
  |         . o   |
  |          o o..|
  |         . oo+.oo|
  |      S.+.o=+|
  |            ==+|
  |            .+=|
  |             E.o |
  |            ...|
  +-----------------+
  # ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.77.190
  root@192.168.77.190's password:
  Now try logging into the machine, with "ssh '192.168.77.190'", and check in:
  .ssh/authorized_keys
  to make sure we haven't added extra keys that you weren't expecting.
  # ssh 192.168.77.190
  Last login: Sun Jul5 23:16:20 2015 from 192.168.77.100
  # clear
  #
  #
  # exit
[*]  copy脚本
#!/bin/bash  
#write by lixi
  
#time by 2015-7-7
  
#run by sh auto.shell.sh /root /mnt
  
if    [ ! -f ip.txt ] ; then
  
echo -e "\033[32mplease create ip.txt files...\033[0m"
  
catip.txt.swp
  
IP=`awk -v I="$i" '{if(I==$1)print $2}' ip.txt.swp`
  
scp -r $1 root@${IP}:$2
  
#rsync -ap --delete $1 root@${IP}:$2
  
done
  以上脚本用rsync也可以,,,rsync同步两个文件一样,,,例如sh auto.shell.sh /opt/ /opt/保持两个服务器之间这个目录文件一样
  4.批量远程服务器执行命令
#!/bin/bash  
# Auto run server commend
  
# by lx 2015-7-7
  
if [ ! -f ip.txt ]; then
  
      echo -e "\033[32mplease create ip.txt files...\033[0m"
  
cat ip.txt.swp
  
      IP=`awk -v I="$i" '{if(I==$1)print $2}' ip.txt.swp`
  
ssh -q -l root $IP "$*; echo -e '-----------------------\nthe $IP Exec command:
  
$* success !';sleep 2"
  
done
root@192_168_77_189 ~]# sh auto_ssh.sh mkdir /tmp/text2  
-----------------------
  
the 192.168.77.190 Exec command:
  
mkdir /tmp/text2 success !
  
-----------------------
  
the 192.168.77.189 Exec command:
  
mkdir /tmp/text2 success !
  5.服务器之前文件同步:
  #!/bin/bash
  #by lixi 2015.7.7
  #run by sh auto_rsync.sh flush
  flush()
  {
  if
  [ ! -f rsync.list ]; then
  echo -e "\033[32mplease create rsync.list file...\033[0m"
  cat rsync.list.swp
  COUNT=`cat rsync.list.swp|wc -l`
  NUM=0
  while ((${NUM} < $COUNT))
  do
  NUM=`expr $NUM + 1`
  Line=`sed -n "${NUM}p" rsync.list.swp`
  SRC=`echo $Line |awk '{print $2}'`
  DES=`echo $Line |awk '{print $3}'`
  IP=`echo $Line |awk '{print $1}'`
  rsync -ap --delete ${SRC}/   root@${IP}:${DES}/
  done
  }
  restart()
  {
  rm -rf restart.list.swp ; cat restart.list | grep -v "#" >> restart.list.swp
  COUNT=`cat restart.list.swp|wc -l`
  NUM=0
  while ((${NUM} < $COUNT))
  do
  NUM=`expr $NUM + 1`
  Line=`sed -n "${NUM}p" restart.list.swp`
  Command=`echo $Line |awk '{print $2}'`
  IP=`echo $Line |awk '{print $1}'`
  ssh -l root $IP "sh $Command; echo -e '----------------\nthe $IP Exec Commadn : sh $Command success !'"
  done
  }
  case $1 in
  flush )
  flush
  ;;
  restart )
  restart
  ;;
  * )
  echo -e "\033[32mUsage: $0 command,example {flush|restart}\033[0m"
  ;;
  esac


页: [1]
查看完整版本: shell批量多台服务器数据copy