我刚开始使用bash脚本,我一直试图打印出整行代码,但却找不到工作的方法。
这是我的密码
#!/bin/bash
MOTD=`cat /etc/motd | awk '{print $1}'`
if [ "$MOTD" = "WARNING" ]
then
echo "Audit Criteria: Warning banner exist."
echo "Vulnerability: No."
echo "Details: $MOTD "
else
echo "Audit Criteria: Warning banners does not exist."
echo "Vulnerability: Yes."
echo "Details: $MOTD "
fi我的产出是:
Audit Criteria: Warning banner exist.
Vulnerability: No.
Details: WARNING:详细信息中只出现了“警告”,而不是WARNING:Authorized uses only All activity may be monitored and reported.:
我相信问题在于
MOTD=`cat /etc/motd | awk '{print $1}'` 和
if [ "$MOTD" = "WARNING" ]部件,我尝试过{print$0},但仍然无法让它工作。
发布于 2014-11-13 11:49:38
我想您想要的是/etc/motd的第一行,而不是第一个单词。如果是这样的话,请使用以下方法:
MOTD=$(head -1 /etc/motd)然后进行字符串比较。
if [[ $MOTD == WARNING* ]; then有关检查字符串是否包含bash中的特定子字符串的更多信息,您可以检查String contains in bash。
发布于 2014-11-13 11:56:20
也许用awk做整件事会更简单些:
awk 'NR==1{
if($1=="WARNING") {
print "Audit Criteria: Warning banner exists."
print "Vulnerability: No."
}
else {
print "Audit Criteria: Warning banner does not exist."
print "Vulnerability: Yes."
}
print "Details: " $0
exit
}' /etc/motd块末尾的条件NR==1和exit意味着只处理文件的第一行。
上面的代码与bash脚本非常相似,但是可以使用变量使其更短:
awk 'NR==1{if($1=="WARNING"){b="exists";v="No"}else{b="does not exist";v="Yes"}
printf "Audit Criteria: Warning banner %s.\nVulnerability: %s.\nDetails: %s\n",b,v,$0
exit}' /etc/motd发布于 2014-11-13 11:52:18
您只使用变量MOTD,而且它只有值警告。
#!/bin/bash
MOTD=`cat /etc/motd | awk '{print $1}'`
if [ "$MOTD" = "WARNING" ]
then
echo "Audit Criteria: Warning banner exist."
echo "Vulnerability: No."
echo "Details: `cat /etc/motd` "
else
echo "Audit Criteria: Warning banners does not exist."
echo "Vulnerability: Yes."
echo "Details: `cat /etc/motd`"
fi或者,如果在/etc/motd中有多行,并且只需要打印一行的话。
#!/bin/bash
MOTDL=`grep WARNING /etc/motd`
MOTD=`cat /etc/motd | awk '{print $1}'`
if [ "$MOTD" = "WARNING" ]
then
echo "Audit Criteria: Warning banner exist."
echo "Vulnerability: No."
echo "Details: $MOTDL "
else
echo "Audit Criteria: Warning banners does not exist."
echo "Vulnerability: Yes."
echo "Details: $MOTDL"
fihttps://stackoverflow.com/questions/26908165
复制相似问题