Skip to content

asimba/uselets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

381 Commits
 
 
 
 

Repository files navigation

Короткие полезности.



Работа с сетью.


Запуск простого ("одноразового") web-сервера для текущей директории.

Требования (зависимости): python

  • python 2.x: python -m SimpleHTTPServer 9000
  • python 3.x: python -m http.server 9000 или python -m http.server --bind <локальный IP адрес привязки> 9000

Примечание: в качестве параметра указывается номер открываемого порта; полезно, когда требуется передать файлы по сети без дополнительных настроек и сервисов.

Перенаправление IPv4 TCP портов в Windows 10.

  • перенаправление: 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") или выполнение сценария со сбросом и повторным внесением правил (к примеру, это можно сделать через штатный планировщик заданий).

Конфигурация bond-интерфейса без поддержки со стороны коммутатора (Linux) (пример).

Конфигурация
 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".

Команды OpenVPN, которые стоит помнить (см. man) (Linux).

  • инициализация (генерация ключей)
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

Пример (шаблон) конфигурации OpenVPN сервера (Linux).

Конфигурация
 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> 

Пример (шаблон) конфигурации OpenVPN клиента (conf/ovpn).

Конфигурация
 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> 

Пример (шаблон) конфигурации сервиса stunnel 4 для использования в связке с OpenVPN (Linux).

Конфигурация
 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

Команды для использования совместно со stunnel 4, которые стоит помнить (см. man) (Linux).

  • генерация серверных ключей
    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 

Вариант сценария добавления пользователя Samba 3 (smbuseradd) (Linux).

Код
 #!/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, аутентификация только по имени пользователя.

Вариант сценария смены пароля пользователя Samba 3 (smbpass) (Linux).

Код
 #!/bin/bash if test $1 then echo $1:$2 | chpasswd chroot /opt/chroot.samba /usr/local/bin/smbpass $1 $2 fi 

Вариант описания сервиса systemd для запуска Samba 3 из chroot окружения (Linux).

Код
 [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 

Вариант простой конфигурации Samba 4 (Linux).

Конфигурация
 [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 

Пример дополнительной блокировки потенциально опасного содержимого в почтовом сервисе Exim (Linux).

Требования (зависимости): 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 10/11).

Требования (зависимости): Windows PowerShell
Get-NetAdapter|Disable-NetAdapter -Confirm:$false отключение сетевых интерфейсов
Get-NetAdapter|Enable-NetAdapter -Confirm:$false включение сетевых интерфейсов

Изменение профиля локальной сети (частная, общественная) (Windows 10).

Требования (зависимости): Windows PowerShell
Get-NetConnectionProfile используется для перечисления текущих профилей
Set-NetConnectionProfile -Name "<Название Вашей сети>" -NetworkCategory <Private|Public> используется для смены профиля

Принудительное использование proxy-сервера для всех программ (Windows 10/11).

Требования (зависимости): Windows PowerShell
netsh winhttp set proxy <proxy>:<port> используется для задания адреса proxy-сервера
netsh winhttp reset proxy используется для сброса адреса proxy-сервера

Синхронизация времени с удалённым сервером из командной строки (Windows).

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/" - локальная директория ("принимающая").

Разрешение доступа в сеть (NAT) в CentOS 7.

firewall-cmd --zone=public --add-masquerade --permanent

Разрешение доступа в сеть (NAT) с использованием iptables (Debian Linux).

Команды
 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 

Работа с дисками/разделами/файловыми системами.


Команды LVM, которые стоит помнить (см. man) (Linux).

  • pvs , pvcreate , pvremove
  • vgs , vgcreate , vgremove
  • lvs , lvcreate , lvremove, lvextend
  • vgcfgbackup -f ./lvm-structure-%s.txt
  • vgcfgrestore -f ... {VG}

Создание архивированного образа файловой системы EXT3/EXT4, расположенной на томе LVM (Linux).

Требования (зависимости): 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".

Создание архивированного образа тома LVM для последующего дифференциального резервирования (Linux).

Требования (зависимости): 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).

Создание дифференциальной резервной копии для архивированного образа тома LVM (см.выше) (Linux).

Требования (зависимости): 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).

Восстановление дифференциальной резервной копии архивированного образа тома LVM (см.выше) (Linux).

Требования (зависимости): 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" - метка времени восстанавливаемой копии.

Пример конфигурации iSCSI-цели (служба tgt) (Linux).

/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 off 

cd /d "%~dp0"

set drv=C:
set src=\Windows\System32\config set pfx=registry

set 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 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Очистка журнала USN NTFS из командной строки (Windows).

fsutil usn deletejournal /n c:

Стандартная очистка дисков из командной строки (Windows).

Требования (зависимости): PowerShell, cleandisk.ps1
powershell -ExecutionPolicy Bypass -command "cleandisk.ps1"

Удаление временных файлов для всех пользователей из командной строки (Windows).

Требования (зависимости): PowerShell, cleartemp.ps1
powershell -ExecutionPolicy Bypass -command "cleartemp.ps1"

Удаление файлов созданных ранее текущей даты на заданное количество дней из командной строки (Windows).

forfiles /P <"Путь к директории для поиска файлов"> /S /M *.<Расширение имён файлов> /D -<Количество дней> /C "cmd /c del /q @path"


Системные операции.


Пример генерации пароля (Linux).

cat /dev/urandom|head -c9|base64
Примечание: длину пароля можно менять, задавая параметр "-с".

Очистка кэшей файловых систем и очистка файла/раздела подкачки (Linux).

Код
 #! /bin/sh sync; echo 1 > /proc/sys/vm/drop_caches swapoff -a; sudo swapon -a 

Команды systemd, которые стоит помнить (см. man) (Linux).

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").

Команды Xen (xl), которые стоит помнить (см. man) (Linux) (примеры).

  • 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, которые стоит помнить (см. man) (Linux) (примеры).

  • 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

Генерация случайного MAC-адреса для сетевого интерфейса Xen DomU (Linux).

Требования (зависимости): random_mac.py
python ./random_mac.py

Пример конфигурации Xen для паравиртуальной гостевой системы Linux (Linux).

Конфигурация
 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' 

Пример конфигурации Xen для гостевой системы Windows Server 2008 (Linux).

Конфигурация
 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' 

Пример конфигурации Xen для гостевой системы Windows Server 2012 R2 (Linux).

Конфигурация
 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' 

Очистка всех журналов событий из командной строки (Windows).

Требования (зависимости): PowerShell
wevtutil el | Foreach-Object {wevtutil cl "$_"}

Получение информации о материнской плате из командной строки (Windows).

wmic baseboard get product,Manufacturer,version,serialnumber wmic csproduct get name wmic bios get serialnumber 

Очистка системного диска Windows 10/11 от временных файлов.

Требования (зависимости): PowerShell, cleanup-x86_64

Потребуется выполнить на свой страх и риск cleanup.exe из прилагающегося архива.

Отключение Windows Defender ("Защитник Windows") (Windows 10/11).

Требования (зависимости): 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

Обход требования подключения к сети во время установки Windows 11.

При появлении запроса на подключение к сети Интернет следует нажать комбинацию клавиш Shift F10, а затем в открывшемся окне командной строки выполнить следующее: taskkill /F /IM oobenetworkconnectionflow.exe
В случае установки Windows 11 22H2 следует нажать комбинацию клавиш Shift F10, а затем в открывшемся окне командной строки выполнить следующее: oobe\bypassnro

Установка сертификатов российских удостоверяющих центров (Windows 10/11).

Требования (зависимости): ru-certs-202602
Потребуется выполнить на свой страх и риск ru-certs-202602.exe из прилагающегося архива.
Примечание: набор сертификатов подготовлен на основании перечня аккредитованных УЦ по данным портала уполномоченного федерального органа в области использования электронной подписи ( Портал УФО ) за февраль 2026 года.


Работа с файлами.


Архивация всех директорий в текущей директории из командной строки (Windows).

Требования (зависимости): 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"

Проверка целостности архива (7z) из командной строки (Linux).

Требования (зависимости): 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


Работа с документами.


Разбиение PDF-файла на отдельные страницы (Windows).

Требования (зависимости): 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.

Склеивание PDF-файла из отдельных файлов страниц в текущей директории (Windows).

Требования (зависимости): 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.jp2
for %f in (*.jp2) do img2pdf.py -d 200 -o "%~pnf.pdf" "%~pnxf"

Пакетное преобразование DOCX-файлов в текущей директории в формат PDF (Windows).

Требования (зависимости): Microsoft Office 2013 или новее, docx2pdf.js
for %f in (*.docx) do cscript //nologo "docx2pdf.js" "%~pnxf" или docx2pdf.cmd

Пакетное преобразование RTF-файлов в текущей директории в формат PDF (Windows).

Требования (зависимости): 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" соответствует уровню "фонового шума".

Удаление аннотаций из PDF-файлов (Linux).

Требования (зависимости): 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".

Удаление аннотаций из PDF-файлов (Windows).

Требования (зависимости): pdftk (PDFtk free), sed, stripannot
stripannot.cmd <имя_исходного_файла> <имя_результирующего_файла>
Пример:stripannot.cmd in.pdf out.pdf
Примечание: обычно используется для удаления комментариев "AutoCAD SHX".

Удаление всего текста из PDF-файлов (Linux/Windows).

Требования (зависимости): ghostscript
Linux: gs -o <имя_результирующего_файла> -sDEVICE=pdfwrite -dFILTERTEXT <имя_исходного_файла>
Windows: gswin64c -o <имя_результирующего_файла> -sDEVICE=pdfwrite -dFILTERTEXT <имя_исходного_файла>
Пример:gswin64c -o output.pdf -sDEVICE=pdfwrite -dFILTERTEXT input.pdf

Удаление парольной защиты от редактирования текста в PDF-файлах (Linux/Windows).

Требования (зависимости): 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

Пакетное изменение размеров файлов изображений в текущей директории (Windows).

Требования (зависимости): 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"

Пакетное преобразование видео файлов (Windows) (пример).

Требования (зависимости): 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.

About

Короткие полезности.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors