- ℹ️Содержание:
- Работа с сетью.
- Запуск простого ("одноразового") 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 off
cd /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
Потребуется выполнить на свой страх и риск ddef64.exe из прилагающегося архива.
Комплексное решение: отключение (снижение активности) Windows Defender (Windows 10/11), удаление bloatware, отключение телеметрии и автообновлений Windows 10/11.
Требования (зависимости): PowerShell, w11fixes-binary-x86 или w11fixes-binary-x86_64
Потребуется выполнить на свой страх и риск fixes32.exe (или fixes64.exe) из прилагающегося архива, предварительно, если потребуется, отключив антивирусную проверку всех типов в "Защитнике Windows" и подтвердив выполнение в открывшемся окне защиты SmartScreen ("Подробнее"->"Выполнить в любом случае"). После утвердительного ответа на запрос об очистке будет выдан запрос "Контроля учётных записей", требуется также ответить утвердительно. После этого система будет трижды перезагружена (причём первый раз в безопасном режиме). Между перезагрузками следует воздержаться от совершения каких-либо действий с компьютером. Рекомендуется после завершения работы программы проверить настройки конфиденциальности. В случае необходимости скачивания обновлений Windows потребуется перевести в автоматический режим запуска и включить следующие службы: Служба оркестратора обновлений (UsoSvc), Фоновая интеллектуальная служба передачи (BITS), Центр обновления Windows (wuauserv).
Примечание: сценарий тестировался на Windows 10 22H2 (версии 10.0.19045.5011) и Windows 11 23H2 (версии 10.0.22631.4317).
Обход требований наличия модуля TPM 2.0 и включенного режима SecureBoot во время установки Windows 11.
На установочном носителе Windows 10 заменить файл install.esd
на соответствующий ему файл с установочного носителя Windows 11. Затем следует отключить компьютер от сети и запускать установку с модифицированного на предыдущем шаге носителя.
При появлении запроса на подключение к сети Интернет следует нажать комбинацию клавиш Shift F10
, а затем в открывшемся окне командной строки выполнить следующее: taskkill /F /IM oobenetworkconnectionflow.exe
В случае установки Windows 11 22H2 следует нажать комбинацию клавиш Shift F10
, а затем в открывшемся окне командной строки выполнить следующее: oobe\bypassnro
Требования (зависимости): ru-certs-202403
Потребуется выполнить на свой страх и риск ru-certs-202308.exe из прилагающегося архива.
Примечание: набор сертификатов подготовлен на основании перечня аккредитованных УЦ по данным портала уполномоченного федерального органа в области использования электронной подписи ( Портал УФО ) за август 2023 года.
Требования (зависимости): 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.jp2
for %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.