очистка вывода команды curl в сценарии bash - PullRequest
0 голосов
/ 13 января 2020

В настоящее время я пытаюсь создать сценарий, который, когда я введу имя уязвимости, вернет мне оценки CVSS3 из таблицы.

Пока мой план:

  1. Свернуть страницу
  2. Grep содержимое, которое я хочу
  3. вывести скорректированный CVSS3 счет

при запуске myscript, однако grep выдает следующую ошибку:

~/Documents/Tools/Scripts ❯ ./CVSS3-Grabber.sh                             
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
  100 30964    0 30964    0     0  28355      0 --:--:--  0:00:01 --:--:-- 28355
  grep: unrecognized option '-->Nessus<!--'
  Usage: grep [OPTION]... PATTERNS [FILE]...
  Try 'grep --help' for more information.

Это меня очень смущает, так как, когда я запускаю это в командной строке, я скручиваю содержимое в sample.txt и затем использую тот же синтаксис grep:

grep $pagetext -e CVSS:3.0/E:./RL:./RC:.

он возвращается ко мне содержание, которое мне нужно, однако, когда я запускаю его через мой скрипт ниже ...

#! /bin/bash
pagetext=$(curl https://www.tenable.com/plugins/nessus/64784)
cvss3_temporal=$(grep $pagetext -e CVSS:3.0/E:./RL:./RC:.)
echo $cvss3_temporal

я получаю ошибки выше!

Я полагаю, что это потому, что '-' вызывает grep думать о тексте внутри файла, что это инструкция, которую grep не знает, следовательно, ошибка. Я попытался скопировать вывод локона в текстовый файл, а затем вычеркнуть его, а не прямо из локона, но все равно не испытывал радости. Кто-нибудь знает способ заставить grep игнорировать '-' или какие-либо флаги при чтении текста? Или в качестве альтернативы, если я могу настроить curl так, чтобы он возвращал только текст без символов?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 13 января 2020

Вам не нужно хранить curl ответ в переменной, просто передайте grep после curl следующим образом:

cvss3_temporal=$(curl -s https://www.tenable.com/plugins/nessus/64784 |
grep -F 'CVSS:3.0/E:./RL:./RC:.')

Обратите внимание на использование -s в curl для подавить прогресс и -F в grep, чтобы убедиться, что вы ищете фиксированную строку.

0 голосов
/ 13 января 2020

Grep фильтрует данный файл или стандартный ввод, если он не был задан. В bash вы можете использовать синтаксис здесь-слова <<< для отправки содержимого переменной на вход grep:

grep -e 'CVSS:3.0/E:./RL:./RC:.' <<< "$pagetext"

Или, если вам больше не нужна страница, вы можете передать вывод от curl напрямую к grep:

curl https://www.tenable.com/plugins/nessus/64784 | grep -e 'CVSS:3.0/E:./RL:./RC:.'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...