суббота, 27 декабря 2025 г.

Сервер делл T320 стал сильно шуметь

Не понятно с чем связано
Решение нашлось тут

# включить возможность ручного управления скоростью вращения
ipmitool -I lanplus -H 10.10.10.140 -U userAdmin -P myPassword raw 0x30 0x30 0x01 0x00
# установить скорость вращения на 20%
ipmitool -I lanplus -H 10.10.10.140 -U userAdmin -P myPassword raw 0x30 0x30 0x02 0xff 0x14

# raw 0x30 0x30: обращение к OEM-функциям Dell для управления охлаждением.
# 0x01: подкоманда, отвечающая за режим управления (автоматический или ручной).
# 0x00: значение «выключено» для автоматического режима (включает ручной контроль).
ipmitool raw 0x30 0x30 0x01 0x00

# ipmitool: Инструмент командной строки для управления IPMI.
# 0x30 0x30: Адресация к Private OEM (Dell), специфичная для серверов Dell.
# 0x02: Команда для установки (Set).
# 0xff: Параметр, указывающий на уровень шума/скорости вращения (часто означает, что мы переходим в ручной режим или задаем базовый уровень).
# 0x14: Значение (в данном случае 20 в десятичной системе), которое задает процент скорости, например, 20% от максимальной.
# 20%
ipmitool raw 0x30 0x30 0x02 0xff 0x14
# 15%
ipmitool raw 0x30 0x30 0x02 0xff 0x0f
# 14%
ipmitool raw 0x30 0x30 0x02 0xff 0x0e
# 13%
ipmitool raw 0x30 0x30 0x02 0xff 0x0d
# 12%
ipmitool raw 0x30 0x30 0x02 0xff 0x0c
# 11%
ipmitool raw 0x30 0x30 0x02 0xff 0x0b
# 10%
ipmitool raw 0x30 0x30 0x02 0xff 0x0a


Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

вторник, 16 декабря 2025 г.

swaks

Вместо telnet smtp.server.do 25
swaks
класная штука!
Пример как восопользоваться
server=mx.server.do
from=testfrom@dom.do
to=testto@do.dom
subject="Test 1"

swaks --tls  --server $server --from $from--to $to --header "Subject: $subject"

А вот пример как отправить зашифрованное письмо:
# необходимые переменные
server=mx13.kaspersky-labs.com
from=sender@gmail.com
to=poluchatel@kaspersky.com
subject="S\MIME email $(date +%Y%m%d-%H%M%S)"
message="Secret message"
to_cert=/etc/pki/crt/poluchatel.crt

# формируем файл сообщения email_body.txt
cat <<EOF > email_body.txt
From: $from
To: $to
Subject: "$subject"
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit

$message
EOF

# шифруем открытым ключом сертификата получателя в файл encrypted.txt
openssl smime -encrypt -in email_body.txt -out encrypted.txt -from $from -to $to -subject "$subject" $to_cert

# отправляем с помощьюу утилиты командной строки swaks
swaks \
--to $to \
--from $from \
--server $server \
--tls \
--data @encrypted.txt

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Получить пользователей из AD

Нужен RSAT

Get-ADUser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))" -Properties CN, EmailAddress, streetAddress, lastLogon | `
Select-Object CN, EmailAddress, streetAddress, lastLogon | `
Export-Csv -Path C:\Users\Ratner\users_only.csv -NoTypeInformation

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Подготовка диска к установки Windows 11 diskpart

Наша целевая картинка
list partition

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Reserved            15 MB    17 KB
  Partition 2    System             512 MB    16 MB
  Partition 3    Reserved           256 MB   528 MB
  Partition 4    Primary            475 GB   784 MB
* Partition 5    Primary           1024 MB   475 GB


Шаг 1. Очистим диск. Конвертируем в GPT
select disk #
clean
convert gpt
list partition


  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Reserved            15 MB    17 KB

Шаг 2. Создадим EFI раздел  
create partition EFI Size=512
Format Quick Fs=FAT32 Label="EFI"
list partition


  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Reserved            15 MB    17 KB
* Partition 2    System             512 MB    16 MB

Шаг 3. Создадим раздел, хз зачем, но такой раздел создаёт инсталятор
create partition msr Size=256
list partition


  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Reserved            15 MB    17 KB
  Partition 2    System             512 MB    16 MB
  Partition 3    Reserved           256 MB   216 MB

Шаг 4. Раздел для установки windows
create partition pri
Format Quick Fs=NTFS Label="system"
list partition


  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Reserved            15 MB    17 KB
  Partition 2    System             512 MB    16 MB
  Partition 3    Reserved           256 MB   528 MB
* Partition 4    Primary            476 GB   784 MB

Шаг 5. Откусим гигабайт с конца для раздела восстановления и создадим его
shrink desired=1024 Minimum=1024
create partition pri
format quick fs=NTFS Label="WinRE"
gpt attributes=0x8000000000000001
list partition


  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Reserved            15 MB    17 KB
  Partition 2    System             512 MB    16 MB
  Partition 3    Reserved           256 MB   528 MB
  Partition 4    Primary            475 GB   784 MB
* Partition 5    Primary           1024 MB   475 GB

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Чтобы apt не задавал лишних вопросов во время обновлений пакетов

Бесит! rpm не спрашивал. Если говоришь 
yum update, то не обнаруживаешь через два часа дурацкий вопрос какую версию файла оставить или ещё что-то подобное.
Решение нашлось тут:

export DEBIAN_FRONTEND=noninteractive; \
apt update; \
apt --assume-yes -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" dist-upgrade; \
apt autoremove -y && reboot


Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

пятница, 15 августа 2025 г.

keytab для пользователя

```shell
ktutil=/usr/local/bin/ktutil
user=ratner
realm=R.RU
pass=$(<~/$user.pass)
kvno=$(ldapsearch -LLL -o ldif-wrap=no -x -H ldaps://r.ru -D kl\\$user -y ~/$user.pass -b "dc=r,dc=ru" '(&(sAMAccountName=ratner))' msDS-KeyVersionNumber | grep "msDS-KeyVersionNumber:" | awk '{ print $2}')
echo $kvno
printf "%b" "addent -password -p $user@$realm -k $kvno -e arcfour-hmac\n$pass\nwrite_kt $user.keytab" | $ktutil
printf "%b" "read_kt $user.keytab\nlist" | $ktutil
```

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Получить список групп для пользователя

(Get-ADUser $username -Properties "memberof").memberof | ForEach-Object { (Get-ADGroup -Identity "$_").SamAccountName }

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Добавить пользователя в локальну группу

$folder = "c:\Users\Public\Scripts"
$user = "user"
$acl = Get-Acl -Path $folder
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($user,"FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.AddAccessRule($accessRule)
Set-Acl -Path $folder -AclObject $acl

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "C:\Users\Public\Scripts\addrights.ps1"
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -Command "Add-LocalGroupMember -Group Administrators -Member kl\ratner -ErrorAction SilentlyContinue"

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Удалить HOME, Gallery Windows 11

Gallery:
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{e88865ea-0e1c-4e20-9aa6-edcd0212c87c}"

Home:
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{f874310e-b6b7-47dc-bc84-b9e6b38f5903}"

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Генератор паролей

alias apg="/usr/bin/apg -n20 -EO0Il1 -a0 -m 8 -x 15 -MNCLs | awk '{ print length, \$0 }' | sort -rn"
Сегенрит 20 паролей, выведет их на экран отсортированных по длине 

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

среда, 25 июня 2025 г.

Windows 11 отключить bluetooth гарнитуру

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

$Source = @"     [DllImport("BluetoothAPIs.dll", SetLastError = true, CallingConvention = CallingConvention.StdCall)]     [return: MarshalAs(UnmanagedType.U4)]     static extern UInt32 BluetoothRemoveDevice(IntPtr pAddress);       public static UInt32 Unpair(UInt64 BTAddress) {        GCHandle pinnedAddr = GCHandle.Alloc(BTAddress, GCHandleType.Pinned);        IntPtr pAddress     = pinnedAddr.AddrOfPinnedObject();        UInt32 result       = BluetoothRemoveDevice(pAddress);        pinnedAddr.Free();        return result;     }  "@    Function Get-BTDevice {      Get-PnpDevice -class Bluetooth |        ?{$_.HardwareID -match 'DEV_'} |           select Status, Class, FriendlyName, HardwareID,              # Extract device address from HardwareID              @{N='Address';E={[uInt64]('0x{0}' -f $_.HardwareID[0].Substring(12))}}  }    ################## Execution Begins Here ################    $BTR       = Add-Type -MemberDefinition $Source -Name "BTRemover"  -Namespace "BStuff" -PassThru  $BTDevices = @(Get-BTDevice) # Force array if null or single item    Do {     If ($BTDevices.Count) {        "`n******** Bluetooth Devices ********`n" | Write-Host        For ($i=0; $i -lt $BTDevices.Count; $i++) {           ('{0,5} - {1}' -f ($i+1), $BTDevices[$i].FriendlyName) | Write-Host        }        $selected = Read-Host "`nSelect a device to remove (0 to Exit)"        If ([int]$selected -in 1..$BTDevices.Count) {           'Removing device: {0}' -f $BTDevices[$Selected-1].FriendlyName | Write-Host           $Result = $BTR::Unpair($BTDevices[$Selected-1].Address)           If (!$Result) {"Device removed successfully." | Write-Host}           Else {"Sorry, an error occured." | Write-Host}        }     }     Else {        "`n********* No devices found ********" | Write-Host     }  } While (($BTDevices = @(Get-BTDevice)) -and [int]$selected)
Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

среда, 4 июня 2025 г.

hyper-v saved-critical windows 11

После обновления с 10 на 11 появились в списке ВМ которых на самом деле нет, из менеджера не удаляются

```powershell
$vmname = 'test1'
$VMManagementService = Get-WmiObject -Namespace 'root\virtualization\v2' -Class Msvm_VirtualSystemManagementService
$vmobject = Get-WmiObject -Namespace 'root\virtualization\v2' -Class 'msvm_computersystem' | Where-Object { $_.elementname -match $vmname }
$VMManagementService.DestroySystem($vmobject)
```

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Меняется разрешение при выключении экрана

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

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\SIMULATED_8086_46A8_00000000_00020000_800050^1A6FF0E82864B84FCEAD280EFF0E764B\00]
"PrimSurfSize.cx"=dword:00000a00
"PrimSurfSize.cy"=dword:000005a0

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\SIMULATED_8086_46A8_00000000_00020000_800050^1A6FF0E82864B84FCEAD280EFF0E764B\00\00]
"ActiveSize.cx"=dword:00000a00
"ActiveSize.cy"=dword:000005a0
"PrimSurfSize.cx"=dword:00000a00
"PrimSurfSize.cy"=dword:000005a0
"DwmClipBox.right"=dword:00000a00
"DwmClipBox.bottom"=dword:000005a0

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\SIMULATED_8086_46A8_00000000_00020000_2045^DD31C473FFED3913883A19534512E68D\00]
"PrimSurfSize.cx"=dword:00000a00
"PrimSurfSize.cy"=dword:000005a0

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\SIMULATED_8086_46A8_00000000_00020000_2045^DD31C473FFED3913883A19534512E68D\00\00]
"ActiveSize.cx"=dword:00000a00
"ActiveSize.cy"=dword:000005a0
"PrimSurfSize.cx"=dword:00000a00
"PrimSurfSize.cy"=dword:000005a0
"DwmClipBox.right"=dword:00000a00
"DwmClipBox.bottom"=dword:000005a0


Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

Заменить циферки на циферки в кавычечках

Задача сделать так, чтобы 01 стало '01' иначе ансибл считае что 01 = 1
notepad++
suffix: (\d+),
suffix: '\1',
Ищем циферки: (\d+)
Берём найденое (содержимое скобочек) в кавычечки: '\1'

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

вторник, 4 марта 2025 г.

Alt linux в WSL

# ALT Linux в WSL

Нам нужен tar файл из архива:
https://ftp.altlinux.org/pub/distributions/ALTLinux/p11/images/cloud/x86_64/alt-p11-rootfs-systemd-x86_64.tar.xz


```powershell
$distro_name = "alt-p11"
$distro_storage = "c:\vm\_wsl\$($distro_name)"
$distro_tarball = "c:\users\public\iso\alt-p11-rootfs-systemd-x86_64.tar"

7z e c:\users\public\iso\alt-p11-rootfs-systemd-x86_64.tar.xz

wsl --unregister $distro_name
wsl --import $distro_name $distro_storage $distro_tarball
wsl -d alt-p11

```

```bash
apt-get update; apt-get install -y passwd sudo

wsluser=appc
adduser -G wheel $wsluser
echo -e "$wsluser ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$wsluser
passwd $wsluser

cat > /etc/wsl.conf <<EOF
[user]
default=$wsluser

[automount]
enabled = true
mountFsTab = false
root = /mnt/
options = "metadata,umask=22,fmask=11"

[network]
generateHosts = true
generateResolvConf = true
EOF

```

```powershell
wsl --terminate $distro_name
wsl -d $distro_name

```

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

четверг, 13 февраля 2025 г.

Не запускается sshd на Windows 10 The process terminated unexpectedly.

Помогло исправить разрешение на 
C:\ProgramData\ssh\logs
Оставил в списке только System и группу Администраторы и 

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090

среда, 12 февраля 2025 г.

Конвертер Windows DHCP в kea-dhcp4.conf


powershell Convert-WindowsDHCPToKea.ps1 \      -in_xml "/var/tmp/win_dhcp.xml" \      -in_template "/etc/kea/kea-dhcp4.conf" \      -out_confdir "/etc/kea" \      -split "all" \      -out_dhcp4_conf "/etc/kea/kea-dhcp4.conf.json" \      -out_confd "/etc/kea/conf.d"

Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090