- ℹ️Содержание:
- Работа с сетью.
- Запуск простого ("одноразового") web-сервера для текущей директории.
- Перенаправление IPv4 TCP портов в Windows 10.
- Конфигурация bond-интерфейса без поддержки со стороны коммутатора (Linux) (пример).
- Команды OpenVPN, которые стоит помнить (см. man) (Linux).
- Пример (шаблон) конфигурации OpenVPN сервера (Linux).
- Пример (шаблон) конфигурации OpenVPN клиента (conf/ovpn).
- Пример (шаблон) конфигурации сервиса stunnel 4 для использования в связке с OpenVPN (Linux).
- Пример (шаблон) конфигурации клиентского сервиса stunnel 4 для использования в связке с OpenVPN (Linux).
- Команды для использования совместно со stunnel 4, которые стоит помнить (см. man) (Linux).
- Вариант сценария добавления пользователя Samba 3 (smbuseradd) (Linux).
- Вариант сценария смены пароля пользователя Samba 3 (smbpass) (Linux).
- Вариант описания сервиса systemd для запуска Samba 3 из chroot окружения (Linux).
- Вариант простой конфигурации Samba 4 (Linux).
- Пример дополнительной блокировки потенциально опасного содержимого в почтовом сервисе Exim (Linux).
- Отключение/включение всех сетевых интерфейсов (Windows 10/11).
- Изменение профиля локальной сети (частная, общественная) (Windows 10).
- Принудительное использование proxy-сервера для всех программ (Windows 10/11).
- Синхронизация времени с удалённым сервером из командной строки (Windows).
- Блокирование доступа в интернет для всех программ, при сохранении доступа в локальную сеть (Windows).
- Отправка почтового сообщения администратору системы при успешном входе в систему по протоколу SSH (Linux).
- Синхронизация содержимого локальной директории с директорией расположенной на удалённом сервере по протоколу SSH (Linux) (пример).
- Разрешение доступа в сеть (NAT) в CentOS 7.
- Разрешение доступа в сеть (NAT) с использованием iptables (Debian Linux).
- Работа с дисками/разделами/файловыми системами.
- Команды LVM, которые стоит помнить (см. man) (Linux).
- Создание архивированного образа файловой системы EXT3/EXT4, расположенной на томе LVM (Linux).
- Создание архивированного образа тома LVM для последующего дифференциального резервирования (Linux).
- Создание дифференциальной резервной копии для архивированного образа тома LVM (см.выше) (Linux).
- Восстановление дифференциальной резервной копии архивированного образа тома LVM (см.выше) (Linux).
- Пример конфигурации iSCSI-цели (служба tgt) (Linux).
- Пример (шаблон) сценария резервного копирования файлов с использованием службы Volume Shadow Copy (Windows 10).
- Очистка журнала USN NTFS из командной строки (Windows).
- Стандартная очистка дисков из командной строки (Windows).
- Удаление временных файлов для всех пользователей из командной строки (Windows).
- Удаление файлов созданных ранее текущей даты на заданное количество дней из командной строки (Windows).
- Системные операции.
- Пример генерации пароля (Linux).
- Очистка кэшей файловых систем и очистка файла/раздела подкачки (Linux).
- Команды systemd, которые стоит помнить (см. man) (Linux).
- Команды Xen (xl), которые стоит помнить (см. man) (Linux) (примеры).
- Команды Virsh, которые стоит помнить (см. man) (Linux) (примеры).
- Генерация случайного MAC-адреса для сетевого интерфейса Xen DomU (Linux).
- Пример конфигурации Xen для паравиртуальной гостевой системы Linux (Linux).
- Пример конфигурации Xen для гостевой системы Windows Server 2008 (Linux).
- Пример конфигурации Xen для гостевой системы Windows Server 2012 R2 (Linux).
- Очистка всех журналов событий из командной строки (Windows).
- Получение информации о материнской плате из командной строки (Windows).
- Очистка системного диска Windows 10/11 от временных файлов.
- Отключение Windows Defender ("Защитник Windows") (Windows 10/11).
- Комплексное решение: отключение (снижение активности) Windows Defender (Windows 10/11), удаление bloatware, отключение телеметрии и автообновлений Windows 10/11.
- Обход требований наличия модуля TPM 2.0 и включенного режима SecureBoot во время установки Windows 11.
- Обход требования подключения к сети во время установки Windows 11.
- Установка сертификатов российских удостоверяющих центров (Windows 10/11).
- Работа с файлами.
- Работа с документами.
- Разбиение PDF-файла на отдельные страницы (Windows).
- Склеивание PDF-файла из отдельных файлов страниц в текущей директории (Windows).
- Пакетное преобразование (сжатие) PDF-файлов (отдельных файлов страниц!) в текущей директории в чёрно-белые с установкой разрешения 200DPI (Windows).
- Пакетное преобразование (сжатие) PDF-файлов (отдельных файлов страниц!) в текущей директории с установкой разрешения 200DPI (Windows).
- Пакетное преобразование DOCX-файлов в текущей директории в формат PDF (Windows).
- Пакетное преобразование RTF-файлов в текущей директории в формат PDF (Windows).
- Пакетное удаление фона в PDF-файлах (отдельных файлах страниц!) в текущей директории с установкой разрешения 300DPI (Windows).
- Удаление аннотаций из PDF-файлов (Linux).
- Удаление аннотаций из PDF-файлов (Windows).
- Удаление всего текста из PDF-файлов (Linux/Windows).
- Удаление парольной защиты от редактирования текста в PDF-файлах (Linux/Windows).
- Пакетное изменение размеров файлов изображений в текущей директории (Windows).
- Пакетное преобразование файлов изображений в формате PNG, находящихся в текущей директории, в формат JPEG (Linux).
- Создание страниц с миниатюрами файлов изображений для всех поддиректорий в текущей директории (Windows).
- Пакетная генерация файлов скринлистов для всех "mp4" файлов в текущей директории (Windows) (пример).
- Пакетное преобразование видео файлов (Windows) (пример).
- Скачивание комплектов документации завершённых проектов из личного кабинета СПб ГАУ "Центр государственной экспертизы"
Требования (зависимости): python
- python 2.x:
python -m SimpleHTTPServer 9000 - python 3.x:
python -m http.server 9000илиpython -m http.server --bind <локальный IP адрес привязки> 9000
Примечание: в качестве параметра указывается номер открываемого порта; полезно, когда требуется передать файлы по сети без дополнительных настроек и сервисов.
- перенаправление:
netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
- где localaddress - локальный IP адрес, localport - локальный порт, destaddress - удалённый (целевой) IP адрес, destport - удалённый (целевой) порт; - просмотр правил перенаправления:
netsh interface portproxy show all - сброс всех правил перенаправления:
netsh interface portproxy reset - выборочное удаление правил перенаправления:
netsh interface portproxy delete v4tov4 listenport=localport listenaddress=localaddress
- где localaddress - локальный IP адрес, localport - локальный порт;
Примечания: все команды должны выполняться с правами администратора; брандмауэр Windows должен быть выключен или в него должны быть добавлены соответствующие разрешающие правила; хотя правила перенаправления и сохраняются после перезагрузки, но для их работы после перезагрузки иногда требуется перезапуск службы iphlpsvc ("Вспомогательная служба IP") или выполнение сценария со сбросом и повторным внесением правил (к примеру, это можно сделать через штатный планировщик заданий).
Конфигурация
source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto bond0 iface bond0 inet manual slaves eno1 eno2 bond-mode balance-alb bond-miimon 100 bond-downdelay 200 bond-updelay 200 auto xenbr0 iface xenbr0 inet static address 192.168.1.8/24 gateway 192.168.0.1 dns-nameservers 192.168.0.1 8.8.8.8 8.8.4.4 77.88.8.8 77.88.8.1 1.1.1.1 bridge_ports bond0 bridge_stp off bridge_waitport 0 bridge_fd 0 Примечание: настройка для использования в режиме моста с гипервизором Xen; файл "/etc/network/interfaces".
- инициализация (генерация ключей)
easyrsa init-pki easyrsa gen-dh easyrsa build-ca nopass easyrsa gen-req <имя_сервера> nopass easyrsa sign-req server <имя_сервера> openvpn --genkey --secret ta.key - генерация файла отозванных ключей (по умолчанию данную процедуру требуется повторять раз в 180 дней)
easyrsa gen-crl - генерация файла отозванных ключей (вариант для старых версий)
source ./vars openssl ca -gencrl -keyfile keys/ca.key -cert keys/ca.crt -out keys/crl.pem -config ./openssl.cnf - добавление пользователя
easyrsa gen-req <имя_конфигурации_пользователя> nopass easyrsa sign-req client <имя_конфигурации_пользователя> - отзыв сертификата пользователя
easyrsa revoke <имя_конфигурации_пользователя> easyrsa gen-crl - отзыв сертификата пользователя (вариант для старых версий)
source ./vars ./revoke-full <имя_конфигурации_пользователя> - для временного игнорирования просроченных пользовательских сертификатов в среде Linux можно использовать связку из утилиты
faketimeи запуска openvpn через сценарий rc.local
Пример:/usr/bin/faketime '2020-12-12 12:12:12' /etc/init.d/openvpn start
Конфигурация
ignore-unknown-option ncp-ciphers port 10788 proto tcp #multihome #local 192.168.1.1 dev tun user nobody group nogroup ifconfig-pool-persist ipp-tcp.txt server 10.8.3.0 255.255.255.0 #маршрутизация с другим VPN сервером на этом же хосте push "route 10.8.2.0 255.255.255.0" topology subnet max-clients 2000 ping 10 ping-restart 80 push "ping 10" push "ping-restart 60" persist-tun persist-key cipher AES-128-CBC ncp-ciphers AES-128-GCM:AES-128-CBC auth SHA1 status-version 2 script-security 2 sndbuf 393216 rcvbuf 393216 reneg-sec 2592000 hash-size 1024 1024 max-routes-per-client 1000 verb 2 mute 3 client-to-client replay-window 128 comp-lzo no push "comp-lzo no" status /var/log/openvpn/openvpn-tcp-status.log log /var/log/openvpn/openvpn-tcp.log log-append /var/log/openvpn/openvpn-tcp.log crl-verify /etc/openvpn/keys/crl.pem <ca> -----BEGIN CERTIFICATE----- # ключ (ca) -----END CERTIFICATE----- </ca> key-direction 0 <tls-auth> -----BEGIN OpenVPN Static key V1----- # ключ (ta) -----END OpenVPN Static key V1----- </tls-auth> <cert> -----BEGIN CERTIFICATE----- # ключ (cert) -----END CERTIFICATE----- </cert> <key> -----BEGIN PRIVATE KEY----- # ключ (key) -----END PRIVATE KEY----- </key> <dh> -----BEGIN DH PARAMETERS----- # ключ (dh) -----END DH PARAMETERS----- </dh> Конфигурация
client dev tun dev-type tun remote 192.168.1.1 10788 tcp nobind persist-tun cipher AES-128-CBC auth SHA1 verb 2 mute 3 push-peer-info ping 10 ping-restart 60 hand-window 70 server-poll-timeout 4 reneg-sec 2592000 sndbuf 393216 rcvbuf 393216 max-routes 1000 remote-cert-tls server comp-lzo no key-direction 1 <ca> # ключ (ca) </ca> <tls-auth> # ключ (ta) </tls-auth> <cert> # ключ (cert) </cert> <key> # клиентский ключ (key) </key> Конфигурация
chroot = /var/lib/stunnel4/ setuid = stunnel4 setgid = stunnel4 pid = /stunnel4.pid output = /stunnel.log debug = info socket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 [openvpn] accept = 443 connect = 1194 CApath = certs CRLpath = crls cert = /etc/stunnel/servercert.pem key = /etc/stunnel/serverkey.pem verify = 3 verifyPeer = yes options = NO_SSLv2 options = NO_SSLv3 ;перенаправление соединения в случае ошибки "рукопожатия" redirect = <имя_сервера_для_перенаправления>:80 Пример (шаблон) конфигурации клиентского сервиса stunnel 4 для использования в связке с OpenVPN (Linux).
Конфигурация
debug = info output = /var/log/stunnel4/stunnel.log pid = /var/run/stunnel4.pid
[vpn] client = yes accept = 127.0.0.1:1194 connect = <имя_сервера_stunnel_openvpn>:443 options = -NO_SSLv3 cert = /etc/stunnel/clientcert.pem key = /etc/stunnel/clientkey.pem CAfile = /etc/stunnel/servercert.pem verify = 3 verifyPeer = yes
- генерация серверных ключей
openssl req -nodes -new -days 3650 -newkey rsa:1024 -x509 -keyout serverkey.pem -out servercert.pem - генерация клиентских ключей (аналогично серверным)
openssl req -nodes -new -days 3650 -newkey rsa:1024 -x509 -keyout clientkey.pem -out clientcert.pem - создание хэш-ссылок на клиентские ключи
Код
#!/bin/sh # # usage: certlink.sh filename [filename ...] for CERTFILE in "$@"; do # Убедиться, что файл существует и это сертификат test -f "$CERTFILE" || continue HASH=$(openssl x509 -noout -hash -in "$CERTFILE") test -n "$HASH" || continue # использовать для ссылки наименьший итератор for ITER in 0 1 2 3 4 5 6 7 8 9; do test -f "${HASH}.${ITER}" && continue ln -s "$CERTFILE" "${HASH}.${ITER}" test -L "${HASH}.${ITER}" && break done done
Код
#!/bin/bash if test $1 then useradd -M -s /sbin/nologin -p xxxxxxxx -g sambausers -d /mnt/storage/local.hive/exchange $1 rm -f /opt/chroot.samba/etc/passwd ; ln /etc/passwd /opt/chroot.samba/etc/passwd rm -f /opt/chroot.samba/etc/shadow ; ln /etc/shadow /opt/chroot.samba/etc/shadow rm -f /opt/chroot.samba/etc/group ; ln /etc/group /opt/chroot.samba/etc/group rm -f /opt/chroot.samba/etc/gshadow ; ln /etc/gshadow /opt/chroot.samba/etc/gshadow echo $1:$2 | chpasswd chroot /opt/chroot.samba /usr/local/bin/smbuseradd $1 $2 xfs_quota -x -c "limit -u bsoft=64G bhard=64G $1" /mnt/storage fi Код
#!/bin/bash #Код сценария /opt/chroot.samba/usr/local/bin/smbuseradd if test $1 then (echo $2; echo $2) | smbpasswd -s -a $1 smbpasswd -e $1 echo $1 = $1 >> /etc/samba/smbusers mkdir -m 0757 /mnt/storage/local.hive/exchange/$1 chown $1.sambausers /mnt/storage/local.hive/exchange/$1 /etc/init.d/samba restart fi Примечание: используется chroot и квоты xfs, аутентификация только по имени пользователя.
Код
#!/bin/bash if test $1 then echo $1:$2 | chpasswd chroot /opt/chroot.samba /usr/local/bin/smbpass $1 $2 fi Код
[Unit] Description=chroot()ed Samba [Service] Type=forking RootDirectory=/opt/chroot.samba ExecStart=/etc/init.d/samba start ExecReload=/etc/init.d/samba restart ExecStop=/etc/init.d/samba stop [Install] WantedBy=multi-user.target Конфигурация
[global] workgroup = SPB netbios name = BackupSrv server string = BackupSrv dns proxy = no hosts allow = 192.168.10. 127. log file = /var/log/samba/log.%m max log size = 1000 logging = file panic action = /usr/share/samba/panic-action %d server role = standalone server obey pam restrictions = yes unix password sync = yes ldap ssl = No security = user passdb backend = smbpasswd passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes invalid users = root guest account = nobody map to guest = bad user dos charset = 866 unix charset = utf8 unix extensions = no ntlm auth = yes username map = /etc/samba/user.map [backup] comment = Backup path = /mnt/share/backup valid users = @smbusers force group = smbusers guest ok = no guest only = no read only = no browseable = yes fake oplocks = no create mask = 0666 directory mask = 0777 Требования (зависимости): python, ripole, 7z, unace, unrar, сценарий checkx.py
Инструкция: в конфигурацию Exim требуется внести изменения нижеследующего вида (предварительно разместив сценарий в директории "/usr/local/bin")
Конфигурация
--------------------------------------------------------------------- #exim4.conf --------------------------------------------------------------------- system_filter = /etc/exim4/exim.filter ... acl_check_mime: # deny message = Potentially type mismatch. - blocked! warn message = X-SS-Suspicious-Flag: YES decode = default condition = ${if match{${run{/usr/local/bin/checkx.py \ $mime_decoded_filename bin \"$mime_filename\"}}}\ {\N(?i)stop\n\N}} # deny message = Potentially executable content (in .zip). - blocked! warn message = X-SS-Suspicious-Flag: YES condition = ${if match{$mime_filename}{\N(?i)\.zip$\N}} decode = default condition = ${if match{${run{/usr/local/bin/checkx.py \ $mime_decoded_filename zip}}}\ {\N(?i)stop\n\N}} # deny message = Potentially executable content (in .gz). - blocked! warn message = X-SS-Suspicious-Flag: YES condition = ${if match{$mime_filename}{\N(?i)\.gz$\N}} decode = default condition = ${if match{${run{/usr/local/bin/checkx.py \ $mime_decoded_filename gz}}}\ {\N(?i)stop\n\N}} # deny message = Potentially executable content (in .7z). - blocked! warn message = X-SS-Suspicious-Flag: YES condition = ${if match{$mime_filename}{\N(?i)\.7z$\N}} decode = default condition = ${if match{${run{/usr/local/bin/checkx.py \ $mime_decoded_filename 7z}}}\ {\N(?i)stop\n\N}} # deny message = Potentially executable content (in .rar). - blocked! warn message = X-SS-Suspicious-Flag: YES condition = ${if match{$mime_filename}{\N(?i)\.rar$\N}} decode = default condition = ${if match{${run{/usr/local/bin/checkx.py \ $mime_decoded_filename rar}}}\ {\N(?i)stop\n\N}} # deny message = Potentially executable content (in .ace). - blocked! warn message = X-SS-Suspicious-Flag: YES condition = ${if match{$mime_filename}{\N(?i)\.ace$\N}} decode = default condition = ${if match{${run{/usr/local/bin/checkx.py \ $mime_decoded_filename ace}}}\ {\N(?i)stop\n\N}} # deny message = Potentially executable content (in .docx). - blocked! warn message = X-SS-Suspicious-Flag: YES condition = ${if match{$mime_filename}{\N(?i)\.docx$\N}} decode = default condition = ${if match{${run{/usr/local/bin/checkx.py \ $mime_decoded_filename docx}}}\ {\N(?i)stop\n\N}} # deny message = Potentially executable content (in .doc). - blocked! warn message = X-SS-Suspicious-Flag: YES condition = ${if match{$mime_filename}{\N(?i)\.doc$\N}} decode = default condition = ${if match{${run{/usr/local/bin/checkx.py \ $mime_decoded_filename doc}}}\ {\N(?i)stop\n\N}} # deny message = Potentially executable content (in .pdf). - blocked! warn message = X-SS-Suspicious-Flag: YES condition = ${if match{$mime_filename}{\N(?i)\.pdf$\N}} decode = default condition = ${if match{${run{/usr/local/bin/checkx.py \ $mime_decoded_filename pdf}}}\ {\N(?i)stop\n\N}} warn message = X-SS-Suspicious-Flag: YES condition = ${if match{$mime_filename}{\N(?i)\.(bat|js|pif|cd|com|exe|lnk|reg|vbs|vbe|jse|msi|ocx|dll|sys|cab|hta|ace|gz|z|jar|xz|ps1|bz2|lzh|uue|001|zipx|arj|iso|appx|appxbundle|msix|msixbundle|ade|mde)$\N}} --------------------------------------------------------------------- #exim.filter --------------------------------------------------------------------- if $h_X-SS-Suspicious-Flag: contains "YES" then deliver suspicious@suspicious@<имя_сервера> endif Требования (зависимости): Windows PowerShell
Get-NetAdapter|Disable-NetAdapter -Confirm:$false отключение сетевых интерфейсов
Get-NetAdapter|Enable-NetAdapter -Confirm:$false включение сетевых интерфейсов
Требования (зависимости): Windows PowerShell
Get-NetConnectionProfile используется для перечисления текущих профилей
Set-NetConnectionProfile -Name "<Название Вашей сети>" -NetworkCategory <Private|Public> используется для смены профиля
Требования (зависимости): Windows PowerShell
netsh winhttp set proxy <proxy>:<port> используется для задания адреса proxy-сервера
netsh winhttp reset proxy используется для сброса адреса proxy-сервера
net time \\<сервер> /set /y
Пример: net time \\192.168.0.1 /set /y
Блокирование доступа в интернет для всех программ, при сохранении доступа в локальную сеть (Windows).
Требования (зависимости): Windows Firewall, PowerShell
New-NetFirewallRule -DisplayName "block-internet" -Direction Outbound -RemoteAddress Internet -Action Block
Отправка почтового сообщения администратору системы при успешном входе в систему по протоколу SSH (Linux).
Инструкция: в директории "/etc/profile.d/" требуется разместить исполняемый файл сценария с инжеследующим содержанием:
Код
if [ -n "$SSH_CLIENT" ]; then TEXT="$(date): ssh login to ${USER}@$(hostname -f)" TEXT="$TEXT from $(echo $SSH_CLIENT|awk '{print $1}')" echo $TEXT|mail -s "ssh login (hive)" root fi Синхронизация содержимого локальной директории с директорией расположенной на удалённом сервере по протоколу SSH (Linux) (пример).
Требования (зависимости): rsync, предварительная генерация ключа "id_rsa" на принимающей стороне, обновление файла "authorized_keys" на отдающей стороне и файла "known_hosts" на принимающей стороне.
Код
#!/bin/bash if [ -f /var/tmp/remote-dump ]; then echo "Still running..." exit 0 fi touch /var/tmp/remote-dump bpath=/etc/backup.keys spath=/mnt/backup/system.images/ sshcm='ssh -Tx24 -i '$bpath'/id_rsa' rsopt='-aHEAXxz4W --del --numeric-ids --stats -e ' rscmd='rsync '$rsopt"'"$sshcm"'" bserv=root@10.8.0.42 eval $rscmd $bserv:$spath /mnt/backups/server.pool/ rm -f /var/tmp/remote-dump Примечание: "bpath" - параметр указывает на путь к директории, в которой хранятся ключ и исполняемый скрипт; "spath" - параметр указывает на путь к исходной директории на удалённом сервере; "bserv" - IP-адрес удалённого сервера; "/mnt/backups/server.pool/" - локальная директория ("принимающая").
firewall-cmd --zone=public --add-masquerade --permanent
Команды
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -F iptables -t nat -F iptables -t mangle -F iptables -X iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT #ens33 - интерфейс локальной сети iptables -A INPUT -i ens33 -j ACCEPT iptables -A OUTPUT -o ens33 -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT #ens32 - интерфейс внешней сети iptables -A INPUT -i ens32 -j ACCEPT iptables -A OUTPUT -o ens32 -j ACCEPT iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m state --state INVALID -j DROP iptables -A FORWARD -m state --state INVALID -j DROP iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP iptables -A FORWARD -i ens33 -o ens32 -j ACCEPT iptables -A FORWARD -i ens32 -o ens33 -j REJECT iptables -t nat -A POSTROUTING -o ens32 -j MASQUERADE - pvs , pvcreate , pvremove
- vgs , vgcreate , vgremove
- lvs , lvcreate , lvremove, lvextend
- vgcfgbackup -f ./lvm-structure-%s.txt
- vgcfgrestore -f ... {VG}
Требования (зависимости): xz-utils, dump
Код
#!/bin/bash backup_path=./ vg_group=/dev/system lvm_volume=host-root lvremove -f $vg_group/$lvm_volume-snap lvcreate -L4G -s -n $lvm_volume-snap $vg_group/$lvm_volume fsck -yvf $vg_group/$lvm_volume-snap dump -0uf $backup_path/$lvm_volume.dump $vg_group/$lvm_volume-snap lvremove -f $vg_group/$lvm_volume-snap xz -9 $backup_path/$lvm_volume.dump Примечание: "backup_path" - директория для хранения архива, "vg_group" - группа томов, "lvm_volume" - наименование архивируемого тома. Восстановление осуществляется аналогичным образом при помощи комады "restore".
Требования (зависимости): rdiff, lz4
Код
#!/bin/bash backup_path=./system.images vg_group=/dev/system lvm_volume=srv1c-disk if [ -f $backup_path/$lvm_volume ]; then cat $backup_path/$lvm_volume | lz4 -z -1 -BD > $backup_path/$lvm_volume.before-`date +%Y-%m-%d`.lz4 rm -f $backup_path/$lvm_volume fi if [ -f $backup_path/$lvm_volume.signature ]; then cat $backup_path/$lvm_volume.signature | lz4 -z -1 -BD > $backup_path/$lvm_volume.before-`date +%Y-%m-%d`.signature.lz4 rm -f $backup_path/$lvm_volume.signature fi lvremove -f $vg_group/$lvm_volume-snap lvcreate -L16G -s -n $lvm_volume-snap $vg_group/$lvm_volume dd if=$vg_group/$lvm_volume-snap of=$backup_path/$lvm_volume bs=64M rdiff -b 262144 -I 67108864 -O 67108864 -- signature $backup_path/$lvm_volume $backup_path/$lvm_volume.signature lvremove -f $vg_group/$lvm_volume-snap Примечание: "backup_path" - директория для хранения архива, "vg_group" - группа томов, "lvm_volume" - наименование архивируемого тома. Способ подходит для разделов фиртуальных машин (параметры блоков "rdiff" подобраны для тома размером 256 GiB).
Требования (зависимости): rdiff, lz4
Код
#!/bin/bash backup_path=./system.images vg_group=/dev/system lvm_volume=srv1c-disk # удаление дельта файлов старше 60 дней # find $backup_path -name "*.delta.*" -type f -mtime +60 -exec rm -f {} \; lvremove -f $vg_group/$lvm_volume-snap lvcreate -L16G -s -n $lvm_volume-snap $vg_group/$lvm_volume rdiff -b 262144 -I 67108864 -O 67108864 -- delta $backup_path/$lvm_volume.signature $vg_group/$lvm_volume-snap - | lz4 -z -1 -BD > $backup_path/$lvm_volume.`date +%Y-%m-%d-%H:%M:%S`.delta.lz4 lvremove -f $vg_group/$lvm_volume-snap Примечание: "backup_path" - директория для хранения архива, "vg_group" - группа томов, "lvm_volume" - наименование архивируемого тома. Способ подходит для разделов фиртуальных машин (параметры блоков "rdiff" подобраны для тома размером 256 GiB).
Требования (зависимости): rdiff, lz4
Код
#!/bin/bash backup_path=./system.images lvm_volume=srv1c-disk time_stamp=2019-10-02-14:50:18 lz4cat $backup_path/$lvm_volume.$time_stamp.delta.lz4 | rdiff -b 262144 -I 67108864 -O 67108864 -- patch $backup_path/$lvm_volume - $backup_path/$lvm_volume.new dd of=$vg_group/$lvm_volume if=$backup_path/$lvm_volume.new bs=64M Примечание: "backup_path" - директория хранения архива, "lvm_volume" - наименование тома, "time_stamp" - метка времени восстанавливаемой копии.
/etc/tgt/conf.d/iscsi-base.conf
<target iqn.2020-12.local:lun1> backing-store /dev/xvda3 initiator-address 192.168.10.1 incominguser iscsi-user q7n8TNnzLsv7 outgoinguser iscsi-target vUD6YXvz7Klb </target> Пример (шаблон) сценария резервного копирования файлов с использованием службы Volume Shadow Copy (Windows 10).
Требования (зависимости): 7-Zip Extra
backupcycle.cmd
@echo offcd /d "%~dp0"
set drv=C:
set src=\Windows\System32\config set pfx=registryset tdr=%drv%temp set mnt=%tdr%\mount set bak=%tdr%\backup set log=%~dp0backup.log
rem echo %drv% rem echo %src% rem echo %tdr% rem echo %mnt% rem echo %bak% rem echo %log%
rem !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! mkdir %bak% rem !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo ================================================================================>>%log% echo %date% %time% : Starting backup task.>>%log% echo ================================================================================>>%log% echo %date% %time% : Removing the old mount point.>>%log% echo -------------------------------------------------------------------------------->>%log% rmdir %mnt% >nul 2>&1 echo -------------------------------------------------------------------------------->>%log% echo %date% %time% : Creating the temporary backup directory.>>%log% echo -------------------------------------------------------------------------------->>%log% for /f "tokens=" %%c in ('date /t') do (set dt=%%c) for /f "tokens=" %%c in ('time /t') do (set tm=%%c) set tmp=%dt%%tm% set datestr=%tmp:/=-% set datestr=%datestr: =-% set datestr=%datestr::=-% set datestr=%datestr:.=-% set bakname=%pfx%-backup-%datestr% mkdir %bak%%bakname% >>%log% 2>&1 echo -------------------------------------------------------------------------------->>%log% echo %date% %time% : Deleting all of the specified volume's shadow copies.>>%log% echo -------------------------------------------------------------------------------->>%log% vssadmin.exe delete shadows /for=%drv% /all /quiet >>%log% 2>&1 echo -------------------------------------------------------------------------------->>%log% echo %date% %time% : Creating new shadow copy.>>%log% echo -------------------------------------------------------------------------------->>%log% wmic shadowcopy call create Volume='^"%drv%^"' >>%log% 2>&1 setlocal enabledelayedexpansion echo -------------------------------------------------------------------------------->>%log% echo %date% %time% : Searching the name of the new shadow copy.>>%log% echo -------------------------------------------------------------------------------->>%log% vssadmin.exe list shadows /for=%drv% >>%log% 2>&1 for /F "delims=" %%c in ('vssadmin.exe list shadows /for^=%drv% ^| findstr /c:GLOBALROOT') do set sw=%%c set "find=* \?" call set sw=%%sw:!find!=\?%% mklink /D %mnt% %sw%\ >>%log% 2>&1 endlocal set src=%src:"=% set mnt=%mnt:"=% set src=%mnt%%src% echo -------------------------------------------------------------------------------->>%log% echo %date% %time% : Copying requested source files.>>%log% echo -------------------------------------------------------------------------------->>%log% robocopy %src% %bak%%bakname% /e /copyall /xj /xjd /xjf /ns /nc /nfl /ndl /np >>%log% 2>&1 echo -------------------------------------------------------------------------------->>%log% echo %date% %time% : Packing the temporary backup directory.>>%log% echo -------------------------------------------------------------------------------->>%log% 7za a -t7z -ms=on -m0=LZMA2 -mx9 -mmt=4 -scsUTF-8 -ssc "%bak%%bakname%.7z" "%bak%%bakname%" echo -------------------------------------------------------------------------------->>%log% echo %date% %time% : Removing the mount point.>>%log% echo -------------------------------------------------------------------------------->>%log% rmdir %mnt% >>%log% 2>&1 echo -------------------------------------------------------------------------------->>%log% echo %date% %time% : Removing the temporary backup directory.>>%log% echo -------------------------------------------------------------------------------->>%log% takeown /r /skipsl /f %bak%%bakname% /d y >nul 2>&1 rd /q /s %bak%%bakname% >>%log% 2>&1 echo -------------------------------------------------------------------------------->>%log% echo %date% %time% : Deleting all of the specified volume's shadow copies.>>%log% echo -------------------------------------------------------------------------------->>%log% vssadmin.exe delete shadows /for=%drv% /all /quiet >>%log% 2>&1 echo ================================================================================>>%log% echo %date% %time% : Finished.>>%log% echo ================================================================================>>%log%
rem !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! move "%bak%%bakname%.7z" "%~dp0%bakname%.7z" rd /q /s %tdr% rem !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
fsutil usn deletejournal /n c:
Требования (зависимости): PowerShell, cleandisk.ps1
powershell -ExecutionPolicy Bypass -command "cleandisk.ps1"
Требования (зависимости): PowerShell, cleartemp.ps1
powershell -ExecutionPolicy Bypass -command "cleartemp.ps1"
Удаление файлов созданных ранее текущей даты на заданное количество дней из командной строки (Windows).
forfiles /P <"Путь к директории для поиска файлов"> /S /M *.<Расширение имён файлов> /D -<Количество дней> /C "cmd /c del /q @path"
cat /dev/urandom|head -c9|base64
Примечание: длину пароля можно менять, задавая параметр "-с".
Код
#! /bin/sh sync; echo 1 > /proc/sys/vm/drop_caches swapoff -a; sudo swapon -a systemctl list-units systemctl status <имя_службы> systemctl restart <имя_службы> systemctl start <имя_службы> systemctl stop <имя_службы> systemctl enable <имя_службы> systemctl disable <имя_службы> systemctl daemon-reload journalctl #journalctl --list-boots равнозначно who -b Примечание: см. также файл "/etc/sysctl.d/*-sysctl.conf" (переменные "vm.swappiness=5" и "vm.vfs_cache_pressure=2000").
- xl create <config_file>
- xl destroy <Domain>
- xl list
- xl usbctrl-attach master-host version=3 ports=8
- xl usb-list master-host
- xl usbdev-attach master-host hostbus=1 hostaddr=3 controller=1 port=1
- xen-create-image --hostname=example-host --memory=1024mb --vcpus=1 --scsi --size=16G --swap=512mb --lvm=system --ip=192.168.0.2 --gateway=192.168.0.1 --netmask=255.255.255.0 --nameserver="192.168.0.1 8.8.8.8"--nodhcp --pygrub --dist=stretch
- virsh domxml-from-native xen-xl master-host.cfg > master-host.xml
- virsh create master-host.xml
- virsh define master-host
- virsh autostart master-host
- virsh autostart master-host --disable
- virsh undefine master-host
- virsh list
- virsh list --all
- virsh list --autostart
- virsh create master-host
- virsh start master-host
- virsh shutdown master-host
Требования (зависимости): random_mac.py
python ./random_mac.py
Конфигурация
name = 'i-host' #для генерации uuid можно использовать dbus-uuidgen #uuid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" bootloader = 'pygrub' vcpus = '1' memory = '1024' root = '/dev/xvda2 ro' disk = [ 'phy:/dev/system/i-host-disk,xvda2,w', 'phy:/dev/system/i-host-swap,xvda1,w', 'phy:/dev/storage/i-base,xvda3,w', ] vif = [ 'mac=00:16:3e:0a:ab:53,bridge=xenbr0' ] on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' Конфигурация
type = 'hvm' name = 'master-host' #для генерации uuid можно использовать dbus-uuidgen #uuid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" xen_platform_pci = 1 viridian = 1 memory = 16384 vcpus = 4 maxvcpus = 4 pae=1 nx=1 hap=1 hpet=1 acpi = 1 apic = 1 vif = [ 'mac=00:16:3e:ef:8e:65,ip=192.168.1.1,type=vif,rate=10Gb/s,bridge=xenbr0' ] disk = ['phy:/dev/system/master-disk,sda,rw'] device_model_version = 'qemu-xen' boot='c' hdtype='ahci' localtime=1 sdl=0 serial='pty' usbdevice='tablet' stdvga=1 vga='stdvga' videoram=32 gfx_passthru=0 vkb=[ 'backend-type=qemu' ] vnc=1 # IP адрес Dom-0 (host система) vnclisten='192.168.1.8' vncdisplay=1 vncpasswd='XXXXXXX' on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' Конфигурация
type = 'hvm' name = 'srv1c-host' #для генерации uuid можно использовать dbus-uuidgen #uuid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" xen_platform_pci = 1 viridian = 1 memory = 32768 vcpus = 8 maxvcpus = 8 pae=1 nx=1 hap=1 hpet=1 acpi = 1 apic = 1 vif = [ 'mac=00:16:3e:f0:f5:b8,ip=192.168.1.2,type=vif,rate=10Gb/s,bridge=xenbr1' ] disk = ['phy:/dev/system/srv1c-disk,hda,rw'] device_model_version = 'qemu-xen' boot='dc' hdtype='ide' localtime=1 sdl=0 serial='pty' usb=1 usbctrl=['type=devicemodel,version=3,ports=8'] usbdev=['hostbus=1,hostaddr=3,controller=0,port=1',] usbdevice='tablet' stdvga=1 vga='stdvga' videoram=32 gfx_passthru=0 vkb=[ 'backend-type=qemu' ] vnc=1 # IP адрес Dom-0 (host система) vnclisten='192.168.1.8' vncdisplay=2 on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' Требования (зависимости): PowerShell
wevtutil el | Foreach-Object {wevtutil cl "$_"}
wmic baseboard get product,Manufacturer,version,serialnumber wmic csproduct get name wmic bios get serialnumber Требования (зависимости): PowerShell, cleanup-x86_64
Потребуется выполнить на свой страх и риск cleanup.exe из прилагающегося архива.
Требования (зависимости): PowerShell, ddef-binary-x86_64
Потребуется выполнить на свой страх и риск ddef.exe из прилагающегося архива.
Комплексное решение: отключение (снижение активности) Windows Defender (Windows 10/11), удаление bloatware, отключение телеметрии и автообновлений Windows 10/11.
Требования (зависимости): PowerShell, w11fixes-binary-x86_64
Потребуется выполнить на свой страх и риск fixes.exe из прилагающегося архива, предварительно, если потребуется, отключив антивирусную проверку всех типов в "Защитнике Windows" и подтвердив выполнение в открывшемся окне защиты SmartScreen ("Подробнее"->"Выполнить в любом случае"). После утвердительного ответа на запрос об очистке будет выдан запрос "Контроля учётных записей", требуется также ответить утвердительно. После этого система будет трижды перезагружена (причём первый раз в безопасном режиме). Между перезагрузками следует воздержаться от совершения каких-либо действий с компьютером. Рекомендуется после завершения работы программы проверить настройки конфиденциальности. В случае необходимости скачивания обновлений Windows потребуется перевести в автоматический режим запуска и включить следующие службы: Служба оркестратора обновлений (UsoSvc), Фоновая интеллектуальная служба передачи (BITS), Центр обновления Windows (wuauserv).
Примечание: сценарий тестировался на Windows 10 22H2 (версии 10.0.19045.6937) и Windows 11 25H2 (версии 10.0.26200.7840).
Обход требований наличия модуля TPM 2.0 и включенного режима SecureBoot во время установки Windows 11.
На установочном носителе Windows 10 заменить файл install.esd на соответствующий ему файл с установочного носителя Windows 11. Затем следует отключить компьютер от сети и запускать установку с модифицированного на предыдущем шаге носителя.
Альтернативный вариант: следует на экране установки Windows 11 нажать комбинацию клавиш Shift F10, а затем в открывшемся окне командной строки выполнить следующие команды: reg add HKLM\SYSTEM\Setup\LabConfig /v BypassTPMCheck /t REG_DWORD /d 1 и reg add HKLM\SYSTEM\Setup\LabConfig /v BypassSecureBootCheck /d 1 /t reg_dword /f
При появлении запроса на подключение к сети Интернет следует нажать комбинацию клавиш Shift F10, а затем в открывшемся окне командной строки выполнить следующее: taskkill /F /IM oobenetworkconnectionflow.exe
В случае установки Windows 11 22H2 следует нажать комбинацию клавиш Shift F10, а затем в открывшемся окне командной строки выполнить следующее: oobe\bypassnro
Требования (зависимости): ru-certs-202602
Потребуется выполнить на свой страх и риск ru-certs-202602.exe из прилагающегося архива.
Примечание: набор сертификатов подготовлен на основании перечня аккредитованных УЦ по данным портала уполномоченного федерального органа в области использования электронной подписи ( Портал УФО ) за февраль 2026 года.
Требования (зависимости): 7-Zip
Архив 7z: for /d %f in (*) do 7z a -t7z -ms=on -m0=LZMA2 -mx9 -mmt=4 -scsUTF-8 -ssc "%~pnf.7z" "%~pnxf"
Архив zip: for /d %f in (*) do 7z a -tzip -m0=Deflate -mx9 "%~pnxf.zip" "%~pnxf"
Требования (зависимости): 7-Zip
for filename in *.7z; do if 7z t "$filename" 2>&1 > /dev/null; then echo $filename passed; else echo $filename failed; fi; done
Создание/проверка(/восстановление исходных данных) файлов с информацией для восстановления (parchive/par2) из командной строки (Linux).
Требования (зависимости): par2
Создание: par2 c -n1 -u -r100 <имя_исходного_файла>.par2 <имя_исходного_файла>
Пример: par2 c -n1 -u -r100 source.tar.gz.par2 source.tar.gz
Примечание: значение параметра "r" - количество (в процентах) информации для восстановления, при 100% можно полностью восстановить отсутствующий исходный файл.
Проверка: par2 v <имя_исходного_файла>.par2
Пример: par2 v source.tar.gz.par2
Восстановление исходных данных: par2 r <имя_исходного_файла>.par2
Пример: par2 r source.tar.gz.par2
Требования (зависимости): pdftk (PDFtk free)
pdftk <имя_файла> burst
Пример:pdftk source.pdf burst
Требования (зависимости): qpdf
qpdf --split-pages=1-z <имя_файла> <префикс_имён_файлов_результата>.pdf
Пример:qpdf --split-pages=1-z source.pdf page.pdf
Требования (зависимости): ghostscript
Linux: gs -dNOPAUSE -dBATCH -sDEVICE=png16m -r200 -sOutputFile="page-%d.png" <имя_исходного_файла>
Windows: gswin64c -dNOPAUSE -dBATCH -sDEVICE=png16m -r200 -sOutputFile="page-%d.png" <имя_исходного_файла>
Windows (со сглаживанием): gswin64c -dNOPAUSE -dBATCH -sDEVICE=png16m -r200 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dDOINTERPOLATE -sOutputFile="page-%d.png" <имя_исходного_файла>
Примечание: значение параметра "-r" ("разрешение") стоит варьировать в диапазоне от 72 до 600; в результате данной операции отдельные страницы сохранаются в формате PNG.
Требования (зависимости): qpdf
qpdf --empty <имя_файла_результата> --pages *.pdf 1-z --
Пример:qpdf --empty destination.pdf --pages *.pdf 1-z --
Пакетное преобразование (сжатие) PDF-файлов (отдельных файлов страниц!) в текущей директории в чёрно-белые с установкой разрешения 200DPI (Windows).
Требования (зависимости): ImageMagick, python, img2pdf
for %f in (*.pdf) do magick convert -density 200 -colorspace Gray -normalize -compress group4 "%~nxf" "%~nf.tif"
for %f in (*.tif) do img2pdf.py -d 200 -o "%~pnf.pdf" "%~pnxf"
Пакетное преобразование (сжатие) PDF-файлов (отдельных файлов страниц!) в текущей директории с установкой разрешения 200DPI (Windows).
Требования (зависимости): ghostscript, ImageMagick, python, img2pdf, mozjpeg
for %f in (*.pdf) do magick convert -density 200 -compress none "%~pnxf" ppm:- | cjpeg-static -sample 2x2 -dct int -optimize -progressive -quality 75 -outfile "%~pnf.jpg"
for %f in (*.jpg) do img2pdf.py -d 200 -o "%~pnf.pdf" "%~pnxf"
Примечание: значение параметра "quality" ("качество") стоит варьировать в диапазоне от 70 до 90; хорошо подходит для больших сканированных изображений (размер файлов может быть уменьшен в несколько раз, но с векторными файлами ситуация обратная).
Примечание: для аналогичной операции с переводом всех страниц к 8-ми битной цветовой палитре следует использовать (дополнительные зависимости: zopflipng):
for %f in (*.pdf) do gswin64c -dSAFER -dNOPAUSE -dBATCH -sDEVICE=png16m -dDOINTERPOLATE -r200 -sOutputFile="%~pnf.png" "%~pnxf"for %f in (*.png) do magick convert %~nxf -density 200 +dither -colors 256 -alpha off PNG8:"%~nf_8bit.png"for %f in (*_8bit.png) do do zopflipng --lossy_8bit --lossy_transparent --always_zopflify "%~pnxf" "%~pnf-z.png"for %f in (*-z.png) do img2pdf.py -d 200 -o "%~pnf.pdf" "%~pnxf"Примечание: для аналогичной операции с применением формата сжатия JPEG2000 следует использовать (дополнительные зависимости: ghostscript, openjpeg):
for %f in (*.pdf) do gswin64c -dSAFER -dNOPAUSE -dBATCH -sDEVICE=png16m -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dDOINTERPOLATE -r200 -sOutputFile="%~pnf.png" "%~pnxf"for %f in (*.png) do magick convert -density 200 -fuzz 10%% -alpha off -fill white -opaque white -units pixelsperinch "%~pnxf" "%~pnf-f.png"for %f in (*-f.png) do opj_compress -q 40 -i %~pnxf -o %~pnf-jp2.jp2for %f in (*.jp2) do img2pdf.py -d 200 -o "%~pnf.pdf" "%~pnxf" Требования (зависимости): Microsoft Office 2013 или новее, docx2pdf.js
for %f in (*.docx) do cscript //nologo "docx2pdf.js" "%~pnxf" или docx2pdf.cmd
Требования (зависимости): Microsoft Office 2013 или новее, rtf2pdf.js
for %f in (*.rtf) do cscript //nologo "rtf2pdf.js" "%~nxf" или rtf2pdf.cmd
Пакетное удаление фона в PDF-файлах (отдельных файлах страниц!) в текущей директории с установкой разрешения 300DPI (Windows).
Требования (зависимости): ImageMagick, python, img2pdf, mozjpeg
for %f in (*.pdf) do magick convert -density 300 -fuzz 10%% -fill white -opaque white -units pixelsperinch -compress none "%~pnxf" ppm:- | cjpeg-static -sample 2x2 -dct int -optimize -progressive -quality 85 -outfile "%~pnf.jpg"
for %f in (*.jpg) do img2pdf.py -d 300 -o "%~pnf.pdf" "%~pnxf"
Примечание: для аналогичной операции с переводом всех страниц в градации серого следует использовать:
for %f in (*.pdf) do magick convert -density 300 -fuzz 10% -fill white -opaque white +dither -fx "(r+g+b)/3" -colorspace Gray -separate -average -strip +profile "*" "%~nxf" ppm:- | cjpeg-static -dct int -optimize -grayscale -quality 65 -outfile "%~pnf.jpg"
Примечание: значение параметра "fuzz" соответствует уровню "фонового шума".
Требования (зависимости): pdftk pdftk <имя_исходного_файла> output - uncompress | sed '/^\/Annots/d' | pdftk - output <имя_результирующего_файла> compress
Пример:pdftk in.pdf output - uncompress | sed '/^\/Annots/d' | pdftk - output out.pdf compress
Примечание: обычно используется для удаления комментариев "AutoCAD SHX".
Требования (зависимости): pdftk (PDFtk free), sed, stripannot
stripannot.cmd <имя_исходного_файла> <имя_результирующего_файла>
Пример:stripannot.cmd in.pdf out.pdf
Примечание: обычно используется для удаления комментариев "AutoCAD SHX".
Требования (зависимости): ghostscript
Linux: gs -o <имя_результирующего_файла> -sDEVICE=pdfwrite -dFILTERTEXT <имя_исходного_файла>
Windows: gswin64c -o <имя_результирующего_файла> -sDEVICE=pdfwrite -dFILTERTEXT <имя_исходного_файла>
Пример:gswin64c -o output.pdf -sDEVICE=pdfwrite -dFILTERTEXT input.pdf
Требования (зависимости): ghostscript
Linux: gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=<имя_результирующего_файла> -f <имя_исходного_файла>
Windows: gswin64c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=<имя_результирующего_файла> -f <имя_исходного_файла>
Пример:gswin64c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf -f input.pdf
Требования (зависимости): ImageMagick, mozjpeg
for %f in (*.jpg) do magick convert -strip -colorspace RGB -filter LanczosRadius -distort Resize "<ширина>>" -distort Resize ">x<высота>" -colorspace sRGB -compress none "%~pnxf" ppm:- | cjpeg-static -sample 2x2 -dct int -optimize -progressive -quality 85 -outfile "%~pnf-1.jpg"
Пример:for %f in (*.jpg) do magick convert -strip -colorspace RGB -filter LanczosRadius -distort Resize "1280>" -distort Resize ">x960" -colorspace sRGB -compress none "%~pnxf" ppm:- | cjpeg-static -sample 2x2 -dct int -optimize -progressive -quality 85 -outfile "%~pnf-1.jpg"
Примечание: значение параметра "quality" ("качество") стоит варьировать в диапазоне от 70 до 90.
Пакетное преобразование файлов изображений в формате PNG, находящихся в текущей директории, в формат JPEG (Linux).
Требования (зависимости): ImageMagick, mozjpeg
find . -name \*.png -type f -exec bash -c 'magick convert -compress none {} ppm:- | cjpeg -sample 2x2 -dct int -optimize -progressive -quality 100 -outfile {}.jpg' \;
Примечание: значение параметра "quality" ("качество") стоит варьировать в диапазоне от 70 до 90.
Создание страниц с миниатюрами файлов изображений для всех поддиректорий в текущей директории (Windows).
Требования (зависимости): ImageMagick
for /d %d in (*) do magick montage -limit thread 6 -limit file 64 -limit memory 8192Mib -limit map 16384MiB -define registry:temporary-path=..\temp -pointsize 10 -label "%wx%h\n%t" -tile 10x10 -geometry 164x162+1+0 -density 200 -units pixelsperinch "%~npxd\*.png" "..\thumbs\%~nxd.png"
Примечание: параметр "temporary-path" - путь к директории для хранения временных файлов, параметр "tile" - количество миниатюр по горизонтали и вертикали, страницы в данном примере генерируются для "png" файлов, результат размещается в директории "..\thumbs%~nxd.png"
Пакетная генерация файлов скринлистов для всех "mp4" файлов в текущей директории (Windows) (пример).
Требования (зависимости): movie thumbnailer (mtn)
for %f in (*.mp4) do mtn -c 4 -r 4 -j 100 -o .jpg -P -w 1200 -Z -D6 "%~pnxf"
Требования (зависимости): ffmpeg, GPAC MP4Box, movie thumbnailer (mtn)
Код
@echo off for %%f in (in\*.wmv,in\*.avi,in\*.mp4,in\*.mkv,in\*.flv) do ( echo "%%~dpnxf" ffmpeg -i "%%~dpnxf" -hide_banner -an -filter_complex "scale=1280:720:flags=lanczos,setdar=16/9,setsar=1/1,unsharp,hqdn3d=2:1:2" -c:v libx264 -b:v 2000k -x264opts frameref=15:fast_pskip=0 -pass 1 -passlogfile tmp\mp4 -preset slow -threads 4 -f rawvideo -y -r film NUL ffmpeg -i "%%~dpnxf" -hide_banner -c:a aac -b:a 128k -ar 44100 -filter_complex "scale=1280:720:flags=lanczos,setdar=16/9,setsar=1/1,unsharp,hqdn3d=2:1:2" -c:v libx264 -b:v 2000k -x264opts frameref=15:fast_pskip=0 -pass 2 -passlogfile tmp\mp4 -preset slow -threads 4 -y -r film "tmp\out.mp4" mp4box -isma -inter 500 -add "tmp\out.mp4" -new "out\%%~nf.mp4" mtn -c 4 -r 4 -j 100 -o .jpg -O out -P -w 1200 -Z -D6 "out\%%~nf.mp4" del /q tmp\tmp.h264 tmp\mp4-0.log tmp\mp4-0.log.mbtree tmp\out.mp4 ) Скачивание комплектов документации завершённых проектов из личного кабинета СПб ГАУ "Центр государственной экспертизы".
Требования (зависимости): Python 3.x.x и PyQt 6.x.x или Node.js 18.x.x и Electron 26.x.x
Для скачивания комплектов документации завершённых проектов из личного кабинета СПб ГАУ ЦГЭ можно воспользоваться одним из наборов скриптов expget.