脚本编写最佳实践 二、Shell 脚本内容 shell !/bin/bash 检查远程主机上指定服务进程是否正在运行 status$(sshpass p ${HostPwd} ssh o StrictHostKeyCheckingno o ConnectTimeout5 ${HostUser}@${HostIP} "pgrep ${serviced} > /dev/null; echo $?") 根据进程状态执行相应操作 if [ "$status" eq 0 ]; then 进程正在运行,执行重启操作 retCode$(sshpass p ${HostPwd} ssh o StrictHostKeyCheckingno ${HostUser}@${HostIP} "sudo systemctl restart ${serviced}; echo $?") else 进程未运行,执行启动操作 retCode$(sshpass p ${HostPwd} ssh o StrictHostKeyCheckingno ${HostUser}@${HostIP} "sudo systemctl start ${serviced}; echo $?") fi if [ "$retCode" eq 0 ]; then echo "0" else echo "1" fi 实现说明 1. 远程连接与命令执行 :使用 sshpass 工具通过密码认证建立 SSH 连接,在远程主机上执行相应命令 2. 进程状态检测 :通过 pgrep ${serviced} 命令检查指定进程是否运行 进程正在运行:返回状态码 0 进程未运行:返回状态码 1 3. 服务管理: 当检测到进程运行时,执行 systemctl restart 命令重启服务 当检测到进程未运行时,执行 systemctl start 命令启动服务 4. 返回值处理 :通过 ${retCode} 获取命令执行结果,0 表示成功,非零值表示失败 参数配置 在"脚本参数"中需要配置以下参数: 请求参数: ${serviced}:需要监控的守护进程名称 返回参数: ${retCode}:用于捕获脚本执行结果的状态码