• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Регулярные выражения Grup

TikTak

Well-known member
16.05.2020
50
0
BIT
352
Возникала не обходимсть
разбить большой фаил на айпи диапазоны
через grup
сделал так grep -E ^NZ GeoIPData.txt | cat >NZ.txt
далее надо отфильтравать всё лишнее из файла что бы на выходе сохронить диапазоны айпи в таком виде 222.155.235.0-222.155.235.3
то есть убрать всё лишнее с лева от списка диапазонов айпи и сохронить в фаил
что бы получилось так
222.155.235.0-222.155.235.3
222.155.235.0-222.155.235.4
222.155.235.0-222.155.235.5
222.155.235.0-222.155.235.6

в регулярках в конец запутался , подскажите пожалуйста
 

Вложения

  • Снимок экрана от 2023-12-29 09-45-16.png
    Снимок экрана от 2023-12-29 09-45-16.png
    5,9 КБ · Просмотры: 1 807
  • Снимок экрана от 2023-12-29 09-50-36.png
    Снимок экрана от 2023-12-29 09-50-36.png
    37,9 КБ · Просмотры: 403
Последнее редактирование:

TikTak

Well-known member
16.05.2020
50
0
BIT
352
всем привет созрел новый вопрос
вот задумался как написать скрипт на bash или через планировщик cron
но ума не приложу как это сделать
за пример возьму два файла exe и dll
Снимок экрана от 2024-07-16 19-26-48.png

сервер на дебиан с установленным Nginx в папке html 3 файла и 1 папка file в которой лежит допустим 1.exe 2.exe 3.exe 4.exe 5.exe 6.exe 7.exe 8.exe 9.exe 10.exe 11.exe и того 50 файлов exe
или 1.dll 2.dll 3.dll 4.dll 5.dll 6.dll 7.dll 8.dll 9.dll 10.dll 11.dll тоже 50 dll
в основой папки html есть se.exe и ven.dll
задача стоит передо мной такая что бы через палнировшик Cron с помощью bash скрипта
написать универсальный скрипт который можно будет использовать на любом сервере
который будт каждый час брать допустим фаил 1.exe затем через час 2.exe и далее через ещё один час 3.exe и так по кругу
преименовывать его в se.exe и заменять фаил в основной папки html фаил на новый переименованный в se.exe
из папки file > 1.exe > se.exe > html => se.exe < новый фаил
ПОДСКАЖИТЕ ПОЖАЛУЙСТА КАК ТАКОЕ РЕАЛИЗОВАТЬ
 
Последнее редактирование:

f22

Codeby Academy
Gold Team
05.05.2019
1 947
228
BIT
1 811
Главный вопрос: если у вас сервер на Debian, как вы планируете запускать exe файлы, через wine?
который будт каждый час брать допустим фаил 1.exe затем через час 2.exe и далее через ещё один час 3.exe и так по кругу
Я бы пошёл немного другим путём - при запуске сервера я бы запускал bash скрипт, в котором бы описывал логику.
Если делать всё в cron, то придётся описывать для каждого файла свою строку.
Если же делать одним скриптом через bash, то всё будет немного проще
Bash:
#!/bin/bash

run_files() {
    mainPath="/var/www/html" # тут нужно указать путь к папке, где лежат файлы
   
    for file in `/bin/ls ${mainPath} | sort`; do
        # если перебираемый объект - это файл, запускаем его
        if [ -f "${mainPath}/${file}" ]; then
            bash "${mainPath}/${file}"
            sleep 1h
            # переименовываем в se.exe
            mv ${mainPath}/${file} ${mainPath}/se.exe
            # не совсем понял куда его обратно переименовывать, но сделать это можно здесь
        fi
    done

while true; do
    run_files
done

Ну а в cron указать выполнять это скрипт после перезагрузки:
@reboot /path/to_script.sh
нужно не забыть сделать его исполняемым
chmod +x /path/to_script.sh
 

TikTak

Well-known member
16.05.2020
50
0
BIT
352
Тут запуск на сервере не требуется
смысл скрипта в чём
у меня на виртуальной среде стоит песочница
туда и выкачиваться эти файлы, то есть скрипт скачивания и запуска стоит на Windows это уже решено
просто мне надо что бы на сервере Debian && Ubunta не имеет значение
каждый час по ссылке из веб сервера Nginx пример или каждый час или пол чеса в зависимости от интервала задаваемого в скрипте менялся фаил
То есть я лажу в папку file
допустим 50 разных exe или dll файлов и переименовываю их по списку 1,2,3,4,5,6,7,8,9,10,11, и тд c расширением exe или dll
а скрипт берёт по списку файлы из папки file и перемешет новый фаил в папку html переименовывая его в se.exe заменяя его в папке html
и получаеться что какждые пол часа или час скрпт помешает новый фаил в папку html а от туда его уже скачивает на виртуальную среду другой скрипт установленный на Windows
 
Последнее редактирование:

TikTak

Well-known member
16.05.2020
50
0
BIT
352
РЕШЕНИЕ если можно как то упростить пишите буду рад любым советам

Bash:
#!/bin/bash

# Путь к директории
base_dir="/home/kilo/Videos/http"
file_dir="$base_dir/file"
format="$1"  # Параметр, определяющий формат файлов (exe или dll)

# Проверка корректности переданного формата
if [[ "$format" != "exe" && "$format" != "dll" ]]; then
    echo "Invalid format specified. Use 'exe' or 'dll'. Exiting."
    exit 1
fi

# Проверка существования директории file
if [[ ! -d $file_dir ]]; then
    echo "Directory $file_dir does not exist. Exiting."
    exit 1
fi

# Функция для обновления файлов
update_files() {
    echo "Checking for next $format files in $file_dir..."

    # Находим следующие файлы указанного формата в алфавитном порядке
    next_file=$(find "$file_dir" -maxdepth 1 -type f -name "*.$format" | sort | head -n 1)

    if [[ -n $next_file ]]; then
        echo "Found file: $next_file."

        if [[ "$format" == "exe" ]]; then
            echo "Moving $next_file to $base_dir/se.exe..."
            mv "$next_file" "$base_dir/se.exe"
            echo "Moved $next_file to $base_dir/se.exe"
        elif [[ "$format" == "dll" ]]; then

echo "Moving $next_file to $base_dir/ven.dll..."
            mv "$next_file" "$base_dir/ven.dll"
            echo "Moved $next_file to $base_dir/ven.dll"
        fi
    else
        echo "No more $format files to process in $file_dir."
        return 1
    fi
}

# Основной цикл
while true; do
    echo "Starting update process for $format files..."
    update_files
    sleep 10  # Пауза на 10 секунд перед следующей проверкой
done
 

f22

Codeby Academy
Gold Team
05.05.2019
1 947
228
BIT
1 811
То есть я лажу в папку file
допустим 50 разных exe или dll файлов и переименовываю их по списку 1,2,3,4,5,6,7,8,9,10,11, и тд c расширением exe или dll
а скрипт берёт по списку файлы из папки file и перемешет новый фаил в папку html переименовывая его в se.exe заменяя его в папке html
и получаеться что какждые пол часа или час скрпт помешает новый фаил в папку html а от туда его уже скачивает на виртуальную среду другой скрипт установленный на Windows
Если честно, не совсем понял вашу задачу, но судя по описанию скрипт выше подходит
РЕШЕНИЕ если можно как то упростить пишите буду рад любым советам
что значит упростить?
 

TikTak

Well-known member
16.05.2020
50
0
BIT
352
Доработанный скрипт

Bash:
#!/bin/bash

# Путь к базовой директории и директории с файлами
base_dir="/var/www/html"
file_dir="$base_dir/file"
file_list="$base_dir/file_list.txt"
interval=10  # Интервал в секундах (10 секунд для тестирования, поменяйте на 3600 для 1 часа)

# Получение параметра для выбора типа файлов
format="$1"

# Проверка корректности переданного формата
if [[ "$format" != "exe" && "$format" != "dll" ]]; then
    echo "Неверный формат указан. Используйте 'exe' или 'dll'. Завершение работы."
    exit 1
fi

# Проверка существования директории file
if [[ ! -d $file_dir ]]; then
    echo "Директория $file_dir не существует. Завершение работы."
    exit 1
fi

# Переменная для отслеживания последнего использованного файла
last_used_file=""

# Функция для проверки и записи файлов
check_and_write_files() {
    echo "Проверка файлов $format в $base_dir на $(date)"

    # Поиск файлов указанного формата и запись их имен в file_list.txt
    find "$base_dir" -maxdepth 1 -name "*.$format" -exec basename {} \; > "$file_list"

    # Проверка, были ли найдены файлы указанного формата
    if [[ -s $file_list ]]; then
        echo "Найдены файлы $format:"
        cat "$file_list"
    else
        echo "Файлы $format не найдены в $base_dir"
        exit 1
    fi
}

# Функция для удаления файлов
delete_files() {
    echo "Удаление файлов $format в $base_dir на $(date)"

    # Чтение имен файлов из file_list.txt и удаление их
    while IFS= read -r filename; do
        if [[ -f "$base_dir/$filename" ]]; then
            rm "$base_dir/$filename"
            echo "Удален $base_dir/$filename"
        else
            echo "Файл $base_dir/$filename не найден, пропуск удаления."
        fi
    done < "$file_list"
}

# Функция для копирования и переименования файлов из file_dir в base_dir
copy_and_rename_files() {
    echo "Копирование и переименование файлов $format из $file_dir в $base_dir на $(date)"

    # Получение списка файлов указанного формата из file_dir
    files=($(find "$file_dir" -maxdepth 1 -type f -name "*.$format" | sort))

    if [[ ${#files[@]} -eq 0 ]]; then
        echo "Файлы $format не найдены в $file_dir. Завершение работы."
        exit 1
    fi

    # Поиск следующего файла для копирования
    if [[ -z $last_used_file ]]; then
        next_file="${files[0]}"
    else
        next_index=0
        for i in "${!files[@]}"; do
            if [[ "${files[$i]}" == "$last_used_file" ]]; then
                next_index=$(( (i + 1) % ${#files[@]} ))
                break
            fi
        done
        next_file="${files[$next_index]}"
    fi

    # Чтение имен файлов из file_list.txt и копирование с переименованием
    while IFS= read -r filename; do
        if [[ -n $next_file ]]; then
            cp "$next_file" "$base_dir/$filename"
            echo "Скопирован и переименован $next_file в $base_dir/$filename"
            last_used_file="$next_file"
        else
            echo "Файлы $format закончились в $file_dir. Повторный запуск."
            break
        fi
    done < "$file_list"
}

# Функция для вычисления и вывода SHA-256 хеша для переименованного файла
calculate_sha256sum() {
    echo "Вычисление SHA-256 хеша для переименованных файлов $format на $(date)"
    while IFS= read -r filename; do
        if [[ -f "$base_dir/$filename" ]]; then
            sha256sum "$base_dir/$filename"
        else
            echo "Файл $base_dir/$filename не найден для вычисления хеша."
        fi
    done < "$file_list"
}

# Основной цикл
while true; do
    # Вызов функции для проверки и записи файлов
    check_and_write_files

    # Вызов функции для удаления файлов
    delete_files

    # Вызов функции для копирования и переименования файлов
    copy_and_rename_files

    # Вызов функции для вычисления SHA-256 хеша
    calculate_sha256sum

    # Ожидание перед следующей итерацией
    echo "Ожидание $interval секунд..."
    sleep $interval
done
 

TikTak

Well-known member
16.05.2020
50
0
BIT
352
В продолжение тему подскажите пожалуйста
через что проще sed awk grep убрать начало строки до определённого слова пример
есть строки типа
: All: 888 INN: 888
: All: 888 INN: 888
: All: 888 INN: 888
: All: 888 INN: 888
надо удалить во всех сроках начало до слова All: 888 INN: 888
что бы получить в итоге такой спиок
All: 888 INN: 888
All: 888 INN: 888
All: 888 INN: 888
All: 888 INN: 888
 

TikTak

Well-known member
16.05.2020
50
0
BIT
352
Подскажите пожалуйста как через awk
взять всё поле определённого :

в таких строках , строки все разные с разным количеством колонок по этому перечислять по колонкам не получается


HOST/ulp_extractor_mix02MEGA.txt:https://www.*********************8/arrow/login/SignIn:80101385185:6588
HOST/ulp_extractor_mix02MEGA.txt:https://auth.*********************8/login:80101385185:6588
HOST/ulp_extractor_mix02MEGA.txt:https://oauth.*********************8/login:84080402689:2004
HOST/ulp_extractor_mix02MEGA.txt:https://www.*********************8/arrow/login/SignIn:8418XXXX719:1204
HOST/yugt98t79p8h.txt:https://www.*********************8/arrow/login/SignInL3:80142210782:4424
HOST/yugt98t79p8h.txt:https://www.*********************8/arrow/login/SignIn:8010XXXX431:0528
HOST/yugt98t79p8h.txt:https://auth.*********************8/login:80105509431:0528
HOST/yugt98t79p8h.txt:https://www.*********************8/arrow/login/SignIn:80105509431:0528
HOST/ulp_extractorMix01_MEGA.txt:https://www.*********************8/arrow/login/SignIn:80101385185:6588
HOST/ulp_extractorMix01_MEGA.txt:https://auth.*********************8/login:80101385185:6588

что бы получилось так
80101385185:6588
80101385185:6588
84080402689:2004
8418XXXX719:1204
80142210782:4424
8010XXXX431:0528
80105509431:0528
80101385185:6588
80101385185:6588
и осиплость только ID и номер пользователя
 

f22

Codeby Academy
Gold Team
05.05.2019
1 947
228
BIT
1 811
гпт предлагает такой вариант
awk -F: '{print $(NF-1) ":" $NF}' input.txt
  • -F: — указывает : как разделитель полей.
  • $(NF-1) — предпоследнее поле (номер телефона).
  • $NF — последнее поле (число).
  • input.txt — файл с входными строками.
 

TikTak

Well-known member
16.05.2020
50
0
BIT
352
гпт предлагает такой вариант
awk -F: '{print $(NF-1) ":" $NF}' input.txt
  • -F: — указывает : как разделитель полей.
  • $(NF-1) — предпоследнее поле (номер телефона).
  • $NF — последнее поле (число).
  • input.txt — файл с входными строками.
Да то что надо спасибо
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!