我们有红帽服务器 - 7.2
sar 的以下输出打印所有相关详细信息,如下所示
sar -p -d 1 1
07:16:35 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:16:36 PM sda 13.00 0.00 120.00 9.23 0.04 3.08 1.38 1.80
07:16:36 PM vg_livecd-lv_root 15.00 0.00 120.00 8.00 0.05 3.07 1.27 1.90
07:16:36 PM vg_livecd-lv_swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:16:36 PM vg_livecd-lv_home 0.00 0.00 0.00 0.00 0.00 0.00
我们现在要在每行的开头添加机器的主机名
首先我们找到主机名
hostname=` hostname `
echo $hostname
server_mng14
预期成绩
sar -p -d 1 1
server_mng14 07:16:35 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
server_mng14 07:16:36 PM sda 13.00 0.00 120.00 9.23 0.04 3.08 1.38 1.80
server_mng14 07:16:36 PM vg_livecd-lv_root 15.00 0.00 120.00 8.00 0.05 3.07 1.27 1.90
server_mng14 07:16:36 PM vg_livecd-lv_swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
server_mng14 07:16:36 PM vg_livecd-lv_home 0.00 0.00 0.00 0.00 0.00 0.00
sar -p -d 1 1
为了获取每行开头的主机名,我们需要通过管道传递什么?
答案1
你可以运行:
sar -p -d 1 1 | sed "s/^/$(hostname) /"
答案2
你可以做:
sar -p -d 1 1 | sed "s,^,$(hostname) ,"
如果您只想将主机名添加到非空行:
sar -p -d 1 1 | sed -E "s,^(.+),$(hostname) \1,"
答案3
awk 版本:
sar -p -d 1 1 | awk -v HOSTNAME=$HOSTNAME '{print HOSTNAME " " $0}'
使用 -v 标志,我们将 bash $HOSTNAME 变量设置为 awk 可以在其 print 语句中引用的变量。使用 $0 我们打印整行
或者在 ssh 上:
ssh user@remote "sar -p -d 1 1 | awk -v HOSTNAME=$HOSTNAME '{print HOSTNAME \" \" \$0}'"