반응형
    
    
    
  MHA master_ip_online_change 스크립트 수정
vim master_ip_online_change#!/usr/bin/env perl
use strict;
use warnings FATAL => 'all';
use Getopt::Long;
# 명령줄 옵션을 저장할 변수들 선언
my (
  $command,              $orig_master_is_new_slave, $orig_master_host,
  $orig_master_ip,       $orig_master_port,         $orig_master_user,
  $orig_master_password, $orig_master_ssh_user,     $new_master_host,
  $new_master_ip,        $new_master_port,          $new_master_user,
  $new_master_password,  $new_master_ssh_user,
);
# VIP와 관련된 변수들 초기화
my $vip = '192.168.56.200/24';
my $key = "1";
my $if  = 'enp0s8';
my $ssh_start_vip = "sudo ifconfig $if:$key $vip";
my $ssh_stop_vip = "sudo ifconfig $if:$key down";
my $ssh_bcast_arp= "sudo arping -I $if -c 3 -A 192.168.56.200";
GetOptions(
  'command=s'                => \$command,
  'orig_master_is_new_slave' => \$orig_master_is_new_slave,
  'orig_master_host=s'       => \$orig_master_host,
  'orig_master_ip=s'         => \$orig_master_ip,
  'orig_master_port=i'       => \$orig_master_port,
  'orig_master_user=s'       => \$orig_master_user,
  'orig_master_password=s'   => \$orig_master_password,
  'orig_master_ssh_user=s'   => \$orig_master_ssh_user,
  'new_master_host=s'        => \$new_master_host,
  'new_master_ip=s'          => \$new_master_ip,
  'new_master_port=i'        => \$new_master_port,
  'new_master_user=s'        => \$new_master_user,
  'new_master_password=s'    => \$new_master_password,
  'new_master_ssh_user=s'    => \$new_master_ssh_user,
);
# main 함수 실행 및 결과 반환
exit &main();
sub main {
  #print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n";
  if ( $command eq "stop" || $command eq "stopssh" ) {
    my $exit_code = 1;
    eval {
      print "\n\n\n***************************************************************\n";
      print "Disabling the VIP - $vip on old master: $orig_master_host\n";
      print "***************************************************************\n\n\n\n";
      &stop_vip();
      $exit_code = 0;
    };
    if ($@) {
      warn "Got Error: $@\n";
      exit $exit_code;
    }
    exit $exit_code;
  }
  elsif ( $command eq "start" ) {
    my $exit_code = 10;
    eval {
      print "\n\n\n***************************************************************\n";
      print "Enabling the VIP - $vip on new master: $new_master_host \n";
      print "***************************************************************\n\n\n\n";
      &start_vip();
      $exit_code = 0;
    };
    if ($@) {
      warn "Got Error: $@\n";
      exit $exit_code;
    }
    exit $exit_code;
  }
  elsif ( $command eq "status" ) {
    print "Checking the Status of the script.. OK \n";
    `ssh $orig_master_ssh_user\@$orig_master_host \" $ssh_start_vip \"`;
    exit 0;
  }
  else {
    &usage();
    exit 1;
  }
}
sub start_vip() {
  `ssh $new_master_ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}
sub stop_vip() {
  `ssh $orig_master_ssh_user\@$orig_master_host \" $ssh_stop_vip \"`;
}
sub usage {
  print
"Usage: master_ip_online_change --command=start|stop|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=port --new_master_host=host --new_master_ip=ip --new_master_port=port\n";
  die;
}
728x90
    
    
  반응형
    
    
    
  '스크립트' 카테고리의 다른 글
| 쉘 스크립트에서 중요한 정보를 환경 변수에 저장하고 스크립트에서 사용하는 방법 (0) | 2023.11.20 | 
|---|---|
| 쉘 스크립트의 명령행 인자(arguments)를 사용하는 방법 (0) | 2023.11.20 | 
| MHA master_ip_failover 스크립트 수정 (0) | 2023.09.12 | 
| 셸(Shell) 스크립트에서 전역 변수와 로컬 변수를 사용하는 방법 (0) | 2023.08.04 | 
| BASH 셸에서 기본 셸 변수의 값을 설정하는 방법 (0) | 2023.07.10 | 
 
                  
                 
                  
                 
                  
                