Архив автора: admin

🐧 Как заблокировать и разблокировать несколько пользователей Linux

Команды usermod и passwd используются для блокировки или разблокировки одной учетной записи пользователя за раз, но вам может потребоваться написать несколько небольших bash скриптов для выполнения этого действия для нескольких учетных записей пользователей.

В этом руководстве мы объясним, как заблокировать и разблокировать несколько учетных записей пользователей одновременно в Linux с помощью shell скрипта.

Что такое команда passwd?

Команда passwd – одна из наиболее часто используемых администратором Linux команд для обновления токенов аутентификации пользователей в файле /etc/shadow путем вызова Linux-PAM и Libuser API.

Создание скрипта shell

Мы создадим следующие три скрипта bash для одновременной блокировки и разблокировки нескольких учетных записей.

  • Cкрипт для блокировки пользователей
  • Cкрипт для проверки статуса заблокированных или разблокированных пользователей
  • Cкрипт для разблокировки пользователей

Составьте список пользователей, которых нужно заблокировать или разблокировать.

Каждый пользователь должен быть в отдельной строке.

SSH Port forwarding

SSH позволяет не только осуществлять подключение к командной строке, он также позволяет пробрасывать порты, это называется Port forwarding.





Читать далее…

Как настроить автоматический перезапуск nginx/apache/mysql на UBUNTU 18.04/20.04 LTS в случае падения

Как автоматически перезапустить сервис в Ubuntu на примере UBUNU 18.04/20.04 LTS при помощи ежеминутной проверки через CRON^




Открываем плаинровщик крон при помощи следующей команды:




crontab -e




Далее вписываем следующую строку в конец файла заданий для проверки и перезапуска apache




#Ежеминутно проверяем работу apache2, если не работает -- перезапускаем
 * * * * ps -A | grep apache2 > /dev/null 2>&1 || /etc/init.d/apache2 restart > /dev/null 2>&1 




Для проверки и перезапуска nginx следующую строку:




Ежеминутно проверяем работу nginx, если не работает -- перезапускаем
 * * * * ps -A | grep nginx > /dev/null 2>&1 || /etc/init.d/nginx restart > /dev/null 2>&1 




Для проверки работы и перезапуска mysql/mariadb:




Ежеминутно проверяем работу MySQL, если не работает -- перезапускаем
 * * * *       /etc/init.d/mysql status >> /var/log/mysql/mysql_status_check.log || /etc/init.d/mysql restart  > /var/log/mysql/restart_by_cron_date '+log_%Y.%m.%d_%H:%M:%S'.log



2021-03-01T02:08:54
Настройка web сервера

PEframe – инструмент для статического анализа вредоносных программ

PEframe – это инструмент с открытым исходным кодом для выполнения статического анализа на Portable Executable malware и общие подозрительные файлы.

Он может помочь исследователям вредоносных программ обнаружить упаковщик, xor, цифровую подпись, мьютексы, анти-отладочную, антивирусную машину, подозрительные разделы и функции и многое другое о подозрительных файлах.

Читать

Как разбить строки в Python

В этой статье объясняется, как разделить строки в Python с помощью методов «split()» и «partition()». Эти методы особенно полезны, если вы хотите преобразовать предложение или группу слов в анализируемые и повторяемые типы Python. Все примеры кода в этой статье протестированы на Python версии 3.8.6.

 

Метод разделения

Метод split() может использоваться для разделения слов с использованием разделителя, указанного пользователем. Он возвращает список разделенных слов без разделителя. Если разделитель не указан пользователем, пробел (один или несколько) используется в качестве единственного разделителя.

Например, приведенный ниже код вернет в качестве вывода «[‘Linux’, ‘Ex’]»:

text = "Linux Ex"

text.split()

 

Приведенный ниже код вернет «[‘AndreyEx’, ‘ru’]» в качестве вывода, когда «.» используется как разделитель:

text = "AndreyEx.ru"

text.split(“.”)

 

Разделитель не обязательно должен состоять из одного символа. Метод split принимает два аргумента:

  • sep: разделитель, который будет использоваться для разделения
  • maxsplit: количество делений, которое нужно сделать

Оба эти аргумента необязательны. Как упоминалось выше, если аргумент «sep» не указан, пробел используется в качестве разделителя для разделения. Аргумент «maxsplit» имеет значение по умолчанию «-1» и по умолчанию разбивает все вхождения. Рассмотрим код ниже:

text = "AndreyEx.co.us"

text.split(“.”)

 

В качестве вывода он вернет «[‘AndreyEx’, ‘co’, ‘us’]». Если вы хотите остановить разделение при первом появлении разделителя, укажите «1» в качестве аргумента «maxsplit».

text = "AndreyEx.co.us"

text.split(“.”, 1)

 

Приведенный выше код вернет в качестве вывода «[‘AndreyEx’, ‘co.us’]». Просто укажите количество вхождений, когда вы хотите, чтобы процесс разделения остановился, в качестве второго аргумента.

Обратите внимание, что если есть последовательные разделители, для остальных разделителей после первого разделения будет возвращена пустая строка (когда аргумент «maxsplit» не используется):

text = "AndreyEx.ru"

text.split(".")

 

Приведенный выше код вернет «[‘AndreyEx’,», ‘ru’] »в качестве вывода. Если вы хотите удалить пустые строки из результирующего списка, вы можете использовать следующий оператор понимания списка:

text = "AndreyEx.ru"

result = text.split(".")

result = [item for item in result if item != ""]

print (result)

 

Вы получите «[‘AndreyEx’, ‘ru’]» в качестве вывода после выполнения приведенного выше примера кода.

Обратите внимание, что метод split() перемещается слева направо для разделения строк на слова. Если вы хотите разделить строку справа налево, используйте вместо этого «rsplit()». Его синтаксис, использование и аргументы точно такие же, как у метода split().

Если при использовании методов «split()» или «rsplit()» в строке не обнаружен разделитель, исходная строка возвращается как единственный элемент списка.

 

Метод разделения

Метод partition() может использоваться для разделения строк, и он работает идентично методу split() с некоторыми отличиями. Наиболее заметное отличие состоит в том, что он сохраняет разделитель и включает его как элемент в результирующий кортеж, содержащий разделенные слова. Это особенно полезно, если вы хотите разделить строку на повторяющийся объект (в данном случае кортеж), не удаляя исходные символы. Рассмотрим код ниже:

text = "AndreyEx.ru"

result = text.partition(".")

print (result)

 

Приведенный выше пример кода вернет «(‘AndreyEx’, ‘.’, ‘ru’)» в качестве вывода. Если вы хотите, чтобы результат был типа списка, используйте вместо этого следующий пример кода:

text = "AndreyEx.ru"

result = list(text.partition("."))

print (result)

 

Вы должны получить «[‘AndreyEx’, ‘.’, ‘ru’]» в качестве вывода после выполнения приведенного выше примера кода.

Метод partition() принимает только один аргумент, называемый sep. Пользователи могут указать разделитель любой длины. В отличие от метода split(), этот аргумент является обязательным, поэтому вы не можете пропустить разделитель. Однако вы можете указать пробел в качестве разделителя.

Обратите внимание, что метод разделения останавливается при первом появлении разделителя. Поэтому, если ваша строка содержит несколько разделителей, метод partition() проигнорирует все другие вхождения. Вот пример, иллюстрирующий это:

text = "AndreyEx.co.us"

result = list(text.partition("."))

print (result)

 

Пример кода выдаст в качестве вывода «[‘AndreyEx’, ‘.’, ‘Co.us’]». Если вы хотите разделить все вхождения разделителя и включить разделитель в окончательный список, возможно, вам придется использовать шаблон «Регулярное выражение» или «Регулярное выражение». В примере, упомянутом выше, вы можете использовать шаблон RegEx следующим образом:

import re

text = "AndreyEx.co.us"

result = re.split("(.)", text)

print (result)

 

Вы получите «[‘AndreyEx’, ‘.’, ‘Co’, ‘.’, ‘Us’]» в качестве вывода после выполнения приведенного выше примера кода. Точка была экранирована в операторе RegEx, упомянутом выше. Обратите внимание, что хотя приведенный выше пример работает с одним символом точки, он может не работать со сложными разделителями и сложными строками. Возможно, вам придется определить свой собственный шаблон RegEx в зависимости от вашего варианта использования. Пример приведен здесь, чтобы дать вам некоторое представление о процессе сохранения разделителя в окончательном списке с помощью операторов RegEx.

Метод partition() иногда может оставлять пустые строки, особенно когда разделитель не найден в строке, которую нужно разделить. В таких случаях вы можете использовать операторы понимания списка для удаления пустых строк, как описано в разделе о методе «split()» выше.

text = "AndreyEx"

result = list(text.partition("."))

result = [item for item in result if item != ""]

print (result)

 

После выполнения приведенного выше кода вы должны получить в качестве вывода «[‘AndreyEx’]».

 

Вывод

Для простых и понятных разделений вы можете использовать методы «split()» и «partition()», чтобы получить повторяющиеся типы. Для сложных строк и разделителей вам нужно будет использовать операторы RegEx.



2021-02-25T12:04:32
Python

Tinyproxy: что это и как настроить?

Tinyproxy — это прокси HTTP/HTTPS. Это легкий, быстрый, очень простой в настройке прокси-сервис с открытым исходным кодом. Tinyproxy также можно настроить как обратный прокси. Его удобно использовать в качестве небольшого прокси с меньшим количеством системных ресурсов, потому что он очень легкий.

Читать