如何在Linux cli命令的开头添加真实主机名

如何在Linux cli命令的开头添加真实主机名

我们有红帽服务器 - 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}'"

相关内容