Linux 故障转移脚本
介绍
在主/备 Linux PBX 之间设置故障转移时,可以使用以下脚本。
- DNSgoogle.sh
- Kill3CXServices.sh
- Shutdown3CXMainMachine.sh
- Stop3CXServices.sh
- StopsAndKill3CXServices.sh
为了使脚本正常运行,您需要:
- 在主和备 PBX 之间交换 phonesystem 用户的 SSH 密钥,以实现无密码 SSH 身份验证
- 更改上传脚本的权限,以便 phonesystem 用户可以执行这些脚本
- 在 sudoers 配置中允许 phonesystem 用户在主动 PBX 上执行所有相关命令
- 仅适用于 DNSgoogle.sh 脚本,请在被动 PBX 上安装 gcloud cli 并验证 phonesystem 用户的身份
可以在此处找到可供下载的 Linux 脚本。
步骤 1:允许 phonesystem 用户执行脚本
以下脚本需要执行此操作:
- Kill3CXServices.sh
- Shutdown3CXMainMachine.sh
- Stop3CXServices.sh
- StopsAndKill3CXServices.sh
- 登录备用 PBX 的管理控制台
- 导航至“备份和恢复”>“故障转移”,并在“之前/之后”部分上传您的脚本
- 通过 SSH 连接到备用 PBX 并运行以下命令,以允许 phonesystem 用户执行脚本
- 确保将 before.sh 和 after.sh 替换为脚本的实际名称
cd /var/lib/3cxpbx/Instance1/Scripts
chmod 700 before.sh
chmod 700 after.sh
步骤 2:为 Phonesystem 用户在主 PBX 和备 PBX 之间交换 SSH 密钥,实现无密码 SSH
- 在备用 PBX 上启动 SSH 并运行以下命令:
su phonesystem
ssh-keygen
cat ~/.ssh/id_rsa.pub
注意:
- 运行 ssh-keygen 命令时,按 Enter 键将文件保存到默认位置。输入空密码后也请按 Enter 键。
- 最后一条命令将打印您的 public_key_string。请记下它,因为您将在下面的步骤 2 中用到它。
- 在主 PBX 上通过 SSH 连接并运行以下命令:
su phonesystem
mkdir -p ~/.ssh
echo public_key_string >> ~/.ssh/authorized_keys
chmod -R go= ~/.ssh
chown -R phonesystem:phonesystem ~/.ssh
注意:请务必将上面的 public_key_string 替换为您在步骤 1 中记下的字符串。
- 再次在备用 PBX 上通过 SSH 连接并运行以下命令测试连接:
su phonesystem
ssh phonesystem@activeIP
注意:请务必将 ActiveIP 替换为您主动 PBX 的实际 IP 地址。如果系统提示,请点击 y 并按 Enter 键确认连接的真实性。
步骤 3:允许 phonesystem 用户在 sudoers 中在活动的主 PBX 上执行命令
- SSH 到主 PBX
- 运行以下命令编辑以下文件:
nano /etc/sudoers.d/90-cloud-init-users
- 在文件末尾添加以下三行并保存(在 nano 中按 Ctrl-X、y、Enter 保存):
phonesystem ALL=(ALL) NOPASSWD: /usr/sbin/shutdown now
phonesystem ALL=(ALL) NOPASSWD: /usr/sbin/service *
phonesystem ALL=(ALL) NOPASSWD: /usr/bin/killall *
步骤 4:DNS 脚本
允许 phonesystem 用户执行脚本
仅以下脚本需要:
- DNSgoogle.sh
- 登录备用 PBX 的管理控制台。
- 导航至“备份和恢复”>“故障转移”,并在“之前/之后”部分上传您的脚本。
- 通过 SSH 连接到备用 PBX 并运行以下命令,允许 phonesystem 用户执行脚本。
注意:请务必将 before.sh 和 after.sh 替换为您的脚本的实际名称。
cd /var/lib/3cxpbx/Instance1/Scripts
chmod 700 before.sh
chmod 700 after.sh
为 phonesystem 用户安装并验证 gcloud CLI
- 通过 SSH 连接到备用机器并运行以下命令安装 gcloud CLI:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates gnupg curl sudo
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
sudo apt-get update && sudo apt-get install google-cloud-cli
- 运行以下命令以将 gcloud cli 验证为 phonesystem 用户:
su phonesystem
gcloud init
注意:
- 请按照说明进行身份验证。
- gcloud init 将提供一个 URL,您可以在浏览器中打开该 URL 并使用您的 Google 帐户登录。
- 在浏览器中完成身份验证后,Google 将提供一个代码,您可以在 SSH 终端中输入 gcloud init。
- 有关更多信息,请参阅本指南: https://cloud.google.com/sdk/docs/install#deb
另请参阅
最后更新
本文档最后更新于 2023 年 6 月 23 日
