Попробуйте получить одну строку из Ansible Output

Любая опция ведения журнала, предоставляемая QEMU, будет слишком низкоуровневой для того, что вам нужно: ваша проблема не в том, что виртуальное оборудование работает некорректно, а только в том, что программное обеспечение внутри виртуальной машины требует внимание.

В этом отношении виртуальная машина не отличается от реальной машины, и решение то же самое. Ваш вопрос предполагает, что виртуальная машина работает под управлением FreeBSD, поэтому вам следует проверить, используя rsyslog , чтобы отправить журналы на внешний сервер системного журнала (который может быть вашим хост-компьютером) через сетевое соединение.

(Я не очень хорошо знаком с BSD, поэтому я не уверен на 100%, что rsyslog - правильное или единственное решение здесь, но это ключевое слово должно помочь вам начать.)

0
10.04.2018, 00:04
3 ответа

Это работает.

#!/bin/bash
OUTPUT=$(cat /etc/passwd | grep -v nologin | grep -v root | awk -F: '{ print 
 $1 }')
block1=`hostname`
while read -r line
do
if [[ `sudo -l -U $line | grep NOPASSWD` ]];then
    echo $block1 $line 
else
    echo $block1 $line 
fi
done <<< "$OUTPUT"
1
28.01.2020, 02:43

Вы можете сделать это, как показано ниже:-

  1. первая строка скрипта напечатает строку 1, а sed извлечет строку из [] и сохранит в param1

  2. Вторая строка скрипта напечатает 4-ю строку, а awk напечатает столбец 3 и сохранит его в переменной param2

  3. 3-я строка скрипта напечатает 5-ю строку, а 4-я строка скрипта напечатает 6-ю строку, awk напечатает столбец 1, а sed удалит из него "

       param1=$(head -1 sudoers.txt | sed  's/ok: \[//g;s/] => {//g')
       param2=$(head -4 sudoers.txt | tail -1 | awk '{print $3}')
       param3=$(head -5 sudoers.txt | tail -1 | awk '{print $1}' | sed 's/"//g')
       param4=$(head -6 sudoers.txt | tail -1 | awk '{print $1}' | sed 's/"//g')
    
       echo '$param1  $param2  $param3  $param4' > sudoers.txt 
    
0
28.01.2020, 02:43

Если элементы вывода, о которых вы упомянули, являются статическими (, если вы уверены, что они не изменятся )означает. Вы можете напрямую использовать команду ниже

Здесь file.txt является доступным выводом

 egrep -o "test1|oracle|cuser|dogfish" file.txt | sort | uniq | tac | tr  "\n" " " | awk '{$5=$3;$3=$4;$4="";print $0}'| sed -r "s/\s+/ /g"

выход

test1 oracle cuser dogfish
0
28.01.2020, 02:43

Теги

Похожие вопросы