Что мне нужно
У меня есть сценарий, который извлекает информацию о портах для доменов и сохраняет ее в текстовом файле с именем портыскан.txt
. Пример:
портыскан.txt
файл:
какой-то домен.com: 80
какой-то домен.com: 443
Я хочу удалить информацию только при соблюдении определенных условий. Эти условия включают в себя:
- Файл с доменами должен состоять из 2 и менее строк
- Порты должны быть только 80 или 443 (т. е. я не хочу удалять файл, если в файле существует 8080, 8443 или любой другой порт).
Примечание: Итак, приведенный выше пример файла должен удалить, но я не хочу удалять файл, если есть 2 строки, но порты 8080 или 8443 (или любой другой порт, если на то пошло)
Пример такой:
какой-то домен.com: 8443
какой-то домен.com: 443
Это должно нет быть удалены.
Что я пробовал
Я попытался написать это, и вот что у меня есть:
#!/бин/баш
строки=$(cat portscan.txt | wc -l)
порты=$(cat portscan.txt | grep -Pv '(^|[^0-9])(80|443)($|[^0-9])')
если [[ $lines < 3 ]] && [[ $ports != 80 ]]; тогда
если [[ $ports != 443 ]]; тогда
эхо "Мне нужно удалить это"
фи
еще
echo "Я НЕ удалю это..."
фи
Это второй рендеринг скрипта, я пробовал вложенный если утверждения, потому что я не смог выполнить такое условие:
ЕСЛИ portscan.txt меньше двух строк И порты НЕТ 80 ИЛИ ЖЕ 443
Я также попытался сделать это гораздо проще:
#!/бин/баш
строки=$(cat portscan.txt | wc -l)
порты=$(cat portscan.txt | grep -Pv '(^|[^0-9])(80|443)($|[^0-9])')
если [[ $lines < 3 ]] && (( $ports != 80||443 )); тогда
эхо "Мне нужно удалить это"
еще
echo "Я НЕ удалю это..."
фи
я пробовал ((
потому что я читал, что это лучше использовать с арифметическими функциями - это то, что я думал, что мне нужно, но я не так хорошо разбираюсь в bash с условными аргументами, когда это должно быть так: "Это и что или же что".
Надеюсь, это имеет смысл, любая помощь будет принята с благодарностью!