Временные метки истории Bash нарушаются при вызове из командной строки в MacOS.

Ваш сценарий написан неправильно:

v=$line | grep [...]

Присвоение переменной не имеет вывода, поэтому вы ничего не передаете в grep.

Вероятно, было бы проще указать awkна ваш hosts.txtфайл:

$ nmap -v -sn 10.10.10.1/24 -oG hosts.txt > /dev/null 2>&1
$ awk '$NF=="Up" { print $2 }' hosts.txt    

Учитывая формат файла, созданногоnmap(простите за другой диапазон IP-адресов; Я явно нахожусь в другой сети, но пример все еще актуален):

$ head hosts.txt
# Nmap 7.60 scan initiated Fri May 11 10:14:28 2018 as: nmap -v -sn -oG hosts.txt 172.28.9.67/24
# Ports scanned: TCP(0;) UDP(0;) SCTP(0;) PROTOCOLS(0;)
Host: 172.28.9.0 (hostname1.internal)   Status: Up
Host: 172.28.9.1 (hostname2.internal)   Status: Up

Если нас интересуют только хосты, которые показывают Status: Up, волшебное слово будет последним в строке. Поэтому мы используем awkдля просмотра только тех строк, где последнее поле равно Up, и печатаем второе поле (с :IP-адресом ).

1
26.04.2020, 21:18
1 ответ

Я могу подтвердить проблему.

Да, проблема с bash версии 3.2.57 и более ранней заключается в том, что они не распознают метки времени в файле истории. Мне не удалось найти конкретное изменение в файле изменений bash. Вероятно, вам нужно обновить bash до более новой версии (4+ ).

1
19.03.2021, 02:25

Теги

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