You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整Bash脚本实现远程服务器服务状态查询输出格式化对齐

Bash 脚本多服务器服务状态查询格式优化方案

你可以直接使用修改后的如下脚本,即可实现预期的左对齐单行输出效果:

#!/bin/bash

USERNAME=vagrant

isengine=(server1 server2 server3 server4 server5)
isengine_services=( ds.rc DFDServer ISFAgents ODFEngine)

# 清空临时文件避免历史内容干扰
> tmp.txt

for h in "${isengine[@]}"
do
  echo "${h}" >> tmp.txt
  # 输出服务器名后加空行,符合预期格式
  echo "" >> tmp.txt
  for i in "${isengine_services[@]}"
  do
     sshpass -p "mysecret" ssh  -o StrictHostKeyChecking=no  "${USERNAME}"@"${h}" "printf '%-12s' '${i}'; systemctl status ${i} | grep Active | sed 's/^ *//'" >> tmp.txt
     # 每条状态单独占一行
     echo "" >> tmp.txt
  done
done

cat tmp.txt

关键改动说明

  • 合并原远程执行的两条输出命令:使用printf '%-12s'指定服务名左对齐占12个字符宽度(可根据你实际最长服务名长度调整数值),直接将服务名与状态行拼接为同一行
  • 新增sed 's/^ *//'处理,清除Active状态行前的多余缩进空格,排版更整洁
  • 新增服务器名称输出后的空行,完全匹配你期望的输出格式
  • 开头新增清空临时文件的逻辑,避免多次运行时历史内容叠加干扰

内容的提问来源于stack exchange,提问作者Andrew Ramnikov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:48:04