如何在Mac OS X上突出显示系统完整性保护响应的状态?

时间:2019-07-17 18:16:28

标签: bash

在笔记本电脑上,我经常在关闭系统完整性保护的情况下运行。我有一个geek_script,它显示了很多我需要了解的设置信息。它显示了我的Mac序列号,操作系统的当前版本,MySQL是否正在运行,最新备份等。我在脚本中添加了一行以显示系统完整性保护的状态。在命令行中,

csrutil status | grep --color  "disabled"

正是我想要产生的东西吗?

System Integrity Protection status: disabled.

禁用词以红色突出显示。

在我的geek_script中,我以#!/ bin / bash开头该脚本,以确保使用bash来运行该脚本,并且有以下一行:

echo '`csrutil status | grep --color  "disabled"'

但是,禁用一词未着色。我已经尝试使用printf,\ bin \ echo等,作为各种Google搜索建议,但无济于事。

1)如何在geek_script中发生这种影响? 2)有人可以解释为什么会这样吗?我知道命令行是在bash中执行的,但是脚本也应该放在#!/ bin / bash的前面,不是吗?
3)如果有更好的方法,请提出建议。我还有其他一些地方,如果要“知道”,我希望某物的状态为红色,如果正常,则要绿色。例如。 MySQL正在运行[绿色],或者MySQL已关闭[红色]。该命令是:

#!/bin/bash
UP=$(pgrep mysqld | wc -l);
if [ $UP != 1 ];
then
   echo "MYSQL is down.";
else
    echo "MySQL is running.";
fi

位于源自geek_scripts脚本的文件中。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可能希望使用env bash shebang,因为它并不取决于bash的路径可能会有所不同,但是/usr/bin/env命令始终存在。

#!/usr/bin/env bash

要在未在交互式外壳程序中运行grep命令时保留其颜色输出,请使用选项--color=always,请参见grep手册页

  

-颜色 [ = ],-颜色 [ = 何时]   围绕匹配的(非空)字符串,匹配行,上下文行,文件名,行号,字节偏移量和分隔符(对于字段和组   上下文行)和转义序列,以在终端上以彩色显示它们。颜色由环境变量 GREP_COLORS 定义。的   仍然支持不推荐使用的环境变量 GREP_COLOR ,但是其设置没有优先级。 何时 从不始终或   自动

echo "$(csrutil status | grep --color=always "disabled")"

如果要控制颜色和突出显示,请使用tput命令,该命令知道从termcap文件驱动终端的代码,而不是对ANSI转义序列进行硬编码。

#!/usr/bin/env bash

br="$(tput -S <<<$'setaf 1\nbold\n')" # Bold Red
bg="$(tput -S <<<$'setaf 2\nbold\n')" # Bold Green
ar="$(tput sgr0)" # Text attributes reset

echo "MYSQL is ${br}down${ar}."
echo "MySQL is ${bg}running${ar}."

答案 1 :(得分:0)

经过大量的实验,感谢上帝为这些快速处理器提供帮助,

 > cat bin/mysql_monitor.sh
    #!/bin/bash
    UP=$(pgrep mysqld | wc -l);
    if [ $UP != 1 ];
    then
       printf "MYSQL is \033[1;31mdown.\033[0m\n";
    else
       printf "MySQL is \033[1;32mrunning.\033[0m\n";
    fi
    #printf "`csrutil status | grep --color 'disabled'`\n";
    if  csrutil status | grep 'disabled' &> /dev/null; then
    printf "System Integrity Protection status: \033[1;31mdisabled\033[0m\n";
    else
    printf "System Integrity Protection status: \033[1;32menabled\033[0m\n";
    fi

这将导致MySQL正在“运行”(绿色)或“已禁用”(红色) 并以红色打印“已禁用”或以绿色打印“已启用”。转义码在不同的计算机上可能有所不同,但是它们对我有用,来自:

 https://misc.flogisoft.com/bash/tip_colors_and_formatting