解决[error][/usr/share/perl5/vendor_perl/MHA/ServerManage

故障现象
可以看到这里有个特殊字符

Unrecognized character \xA0; marked by <-- HERE after '▒'<-- HERE near column 4                                                                                       at /usr/local/bin/master_ip_failover line 8.

查看文件 vim /usr/local/bin/master_ip_failover

#!/usr/bin/env perl
use strict;
use warnings FATAL => 'all';
 
use Getopt::Long;
 
my (
 $command,  $ssh_user, $orig_master_host, $orig_master_ip,
 $orig_master_port, $new_master_host, $new_master_ip, $new_master_port
);
 
my $vip = '192.168.80.21';
my $brdc = '192.168.80.255';
my $ifdev = 'ens33';
my $key = '1';
my $ssh_start_vip = "/usr/sbin/ip addr add $vip/24 brd $brdc dev $ifdev label $ifdev:$key;/usr/sbin/arping -q -A -c 1 -I $ifdev:$key $vip;iptables -F;";
my $ssh_stop_vip = "/usr/sbin/ip addr del $vip/24 dev $ifdev label $ifdev:$key";
 
GetOptions(
 'command=s' => \$command,
 'ssh_user=s' => \$ssh_user,
 'orig_master_host=s' => \$orig_master_host,
 'orig_master_ip=s' => \$orig_master_ip,
 'orig_master_port=i' => \$orig_master_port,
 'new_master_host=s' => \$new_master_host,
 'new_master_ip=s' => \$new_master_ip,
 'new_master_port=i' => \$new_master_port,
);
 
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 "Disabling the VIP on old master: $orig_master_host \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 "Enabling the VIP - $vip on the new master - $new_master_host \n";
 &start_vip();
 $exit_code = 0;
 };
 if ($@) {
 warn $@;
 exit $exit_code;
 }
 exit $exit_code;
 }
 elsif ( $command eq "status" ) {
 print "Checking the Status of the script.. OK \n";
 exit 0;
 }
 else {
 &usage();
 exit 1;
 }
}
sub start_vip() {
 `ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}
# A simple system call that disable the VIP on the old_master
sub stop_vip() {
 `ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`;
}
 
sub usage {
 print
 "Usage: master_ip_failover --command=start|stop|stopssh|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";
}

  看不出来【苦笑】

直接用三剑客之一 sed 处理 (简单粗暴)
sed -i "s/\xA0//g" /usr/local/bin/master_ip_failover
再检查一次配置
 masterha_check_repl --conf=/etc/masterha/app1.cnf

哈哈过啦 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这个错误是由于在perl模块中找不到Log/Dispatch.pm文件导致的。根据引用\[1\]中的错误信息,可以看到@INC中包含了一些perl模块的路径,但是在这些路径中找不到Log/Dispatch.pm文件。同样的问题也出现在引用\[2\]中,只是这次是找不到Params/Validate.pm文件。 解决这个问题的方法是安装缺失的perl模块。在这种情况下,你需要安装Log::Dispatch和Params::Validate模块。你可以使用CPAN或者系统包管理器来安装这些模块。 如果你使用的是CPAN,你可以在终端中运行以下命令来安装这些模块: ``` cpan Log::Dispatch cpan Params::Validate ``` 如果你使用的是系统包管理器,你可以根据你使用的操作系统和包管理器的不同,运行适当的命令来安装这些模块。例如,在Ubuntu上,你可以使用以下命令: ``` sudo apt-get install liblog-dispatch-perl sudo apt-get install libparams-validate-perl ``` 安装完这些模块后,你应该能够解决这个错误并成功运行你的程序。 #### 引用[.reference_title] - *1* [Can't locate Log/Dispatch.pm in @INC](https://blog.csdn.net/weixin_30685047/article/details/99237075)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Can't locate Params/Validate.pm in @INC (@INC contains: /usr/local/lib64/perl5 /](https://blog.csdn.net/weixin_30838873/article/details/96170433)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值