Результаты поиска: Valid MB-500 Test Pattern 🤕 MB-500 Valid Test Tutorial ➕ Latest MB-500 Braindumps 🤥 Immediately open ⮆ www.pdfvce.com ⮄ and search for ▛ MB-500 ▟ to obtain a free download 🧑New MB-500 Exam Cram

Пластинка: Banjo Band Ivana Mládka ‎- Nashledanou!

Уххх, страшное название!

Кто не понял — ну это тот чувак, который…  :oops:

Теперь у меня есть пластиночка, которая начинается с этой самой песни, да и вообще содержит годный джаз =)

Как давно выключена эта виртуалка?

Набросал небольшой скриптец для VMware ESXi, чтобы проверять как давно менялось состояние виртуальных машин. При запуске он заполняет кастомное поле «Power» состоянием и датой, когда это состояние было обнаружено. Кинув в шедулер можно с некоторой точностью понимать, что вот эту виртуалку выключили только вчера, а вот та — выключена уже пару лет (конечно после того как этот скрипт пару лет проверял ее состояние =). Скрипт использует VMware PowerCLI

check-vm-powerstate.ps1
 
  1. Add-PSSnapin VMware.VimAutomation.Core
  2. Connect-VIServer -Server localhost
  3. Get-VM  | ForEach-Object {
  4.                         $vm = $_
  5.                         $date = (Get-Date -UFormat "%Y-%m-%d  %R").ToString()
  6.                         $AnnotationStatus =  (Get-Annotation $_ | Where-Object { $_.Name -eq "Power"}).Value
  7.                        
  8.                         if ( ($_.PowerState -eq 'PoweredOn') -and ($AnnotationStatus -like 'Down*') ) {
  9.                             $vm | Set-Annotation -CustomAttribute "Power" -Value "Up since $date"
  10.                         }
  11.                         if ( ($_.PowerState -eq 'PoweredOn') -and ($AnnotationStatus -eq '') ) {
  12.                             $vm | Set-Annotation -CustomAttribute "Power" -Value "Up since  < $date"
  13.                         }
  14.                         if ( ($_.PowerState -eq 'PoweredOff') -and ($AnnotationStatus -like 'Up*') ) {
  15.                             $vm | Set-Annotation -CustomAttribute "Power" -Value "Down since $date"
  16.                         }
  17.                         if ( ($_.PowerState -eq 'PoweredOff') -and ($AnnotationStatus -eq '') ) {
  18.                             $vm | Set-Annotation -CustomAttribute "Power" -Value "Down since < $date"
  19.                         }
  20.                     }

Папка windows\temp забивается файлами cab_xxxx

Данная проблема вызвана сбоем службы автоматического обновления Windows, в частности при работе с серверами обновлений WSUS.

Пошаговое решение проблемы выглядит так:

  1. Остановка службы обновлений (wuauserv)
  2. Остановка службы trustedinstaller
  3. Удаление содержимого папки c:\windows\temp
  4. Удаление cab-файлов из папки c:\windows\logs\CBS
  5. Удаление папки  C:\windows\softwaredistribution
  6. Запуск сервиса trustedinstaller
  7. Запуск службы обновления

Для удаленного автоматического решения проблемы можно воспользоваться скриптом:

fix_winupdate_tmp_cab.ps1
 
  1. $Machine = read-host "Type in the Computer Name"
  2. $windowsUpdateService = 'wuauserv'
  3. $trustedInstallerService = 'trustedinstaller'
  4. function Set-ServiceState
  5. {
  6.     [CmdletBinding()]
  7.     param(
  8.         [string]$ComputerName,
  9.         [string]$ServiceName
  10.     )
  11.     Write-Verbose "Evaluating $ServiceName on $ComputerName."
  12.     [string]$WaitForIt = ""
  13.     [string]$Verb = ""
  14.     [string]$Result = "FAILED"
  15.     $svc = Get-Service -computername $ComputerName -name $ServiceName
  16.     Switch ($svc.status) {
  17.         'Stopped' {
  18.             Write-Verbose "[$ServiceName] is currently Stopped. Starting."
  19.             $Verb = "start"
  20.             $WaitForIt = 'Running'
  21.             $svc.Start()
  22.         }
  23.         'Running' {
  24.             Write-Verbose "[$ServiceName] is Running. Stopping."
  25.             $Verb = "stop"
  26.             $WaitForIt = 'Stopped'
  27.             $svc.Stop()
  28.         }
  29.         default {
  30.             Write-Verbose "$ServiceName is $($svc.status). Taking no action."
  31.         }
  32.     }
  33.     if ($WaitForIt -ne "") {
  34.         Try { # For some reason, we cannot use -ErrorAction after the next statement:
  35.             $svc.WaitForStatus($WaitForIt,'00:02:00')
  36.         } Catch {
  37.             Write-Warning "After waiting for 2 minutes, $ServiceName failed to $Verb."
  38.         }
  39.         $svc = (get-service -computername $ComputerName -name $ServiceName)
  40.         if ($svc.status -eq $WaitForIt) {
  41.             $Result = 'SUCCESS'
  42.         }
  43.         Write-Verbose "$Result - $ServiceName on $ComputerName is $($svc.status)"
  44.         Write-Verbose ("{0} - {1} on {2} is {4}" -f $Result, $ServiceName, $ComputerName, $svc.status)
  45.     }
  46. }
  47. # stop update service
  48. Write-Host "stop update service"
  49. Set-ServiceState -ComputerName $Machine -ServiceName $windowsUpdateService -Verbose
  50. #removes temp files and renames software distribution folder
  51. Write-Host "removes temp files and renames software distribution folder"
  52. Remove-Item \\$Machine\c$\windows\temp\* -recurse
  53. Rename-Item \\$Machine\c$\windows\SoftwareDistribution SoftwareDistribution.old
  54. #restarts update service
  55. Write-Host "restarts update service"
  56. Set-ServiceState -ComputerName $Machine -ServiceName $windowsUpdateService
  57. #removes software distribution.old
  58. Write-Host "removes software distribution.old"
  59. Remove-Item \\$Machine\c$\windows\SoftwareDistribution.old -recurse
  60. #stops trustedinstaller service
  61. Write-Host "stops trustedinstaller service"
  62. Set-ServiceState -ComputerName $Machine -ServiceName $trustedInstallerService
  63. #removes cab files from trustedinstaller
  64. Write-Host "removes cab files from trustedinstaller"
  65. remove-item \\$Machine\c$\windows\Logs\CBS\* -recurse
  66. #restarts trustedinstaller service
  67. Write-Host "restarts trustedinstaller service"
  68. Set-ServiceState -ComputerName $Machine -ServiceName $trustedInstallerService
  69. #rebuilds cab files from WSUS
  70. Write-Host "rebuilds cab files from WSUS"
  71. invoke-command -ComputerName $Machine -ScriptBlock { & cmd.exe "c:\windows\system32\wuauclt.exe /detectnow" }

Источник: https://community.spiceworks.com/topic/495234-windows-temp-file-is-full-of-cab_xxxx-files-on-windows-server-2008-r2

Банька для пластинок

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

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

В ванночку заливается поставляемое в комплекте моющее средство и заливается водой до риски.

Сверху втыкается пластинка и крутится руками взад-вперед несколько раз. Как указано в инструкции — 3 раза в одну, и 3 в другую сторону, но тут по вкусу. Учитывая совершенно убитое, с точки зрения абстрактного ценителя в вакууме, состояние имеющихся пластинок, я покрутил их подольше =)

Кстати хочу сказать, что щеточки в этом приспособлении не совсем обычные, а, скажем так, направленные. То есть нечто типа ворса расположено так, чтобы выскребать желобки пластинки.

После помывки пластинки вытираются прилагаемыми безворсовыми (на фото видно что все же пара ниточек при первом использовании с них упала) тряпочками

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

Ну и этот пост был бы не полным без сравнения звучания до и после. Скажу сразу — большого чуда не произошло. Видимо пластинки очень грязные и без более серьезных профессиональных моек с вакуумными отсосами не прочистить спрессованный мусор. Но, тем не менее, некий результат, который можно услышать невооруженными ушами — есть.

Скоромуж до:

 

Скоромуж после:

Пол Ромеро в Москве

В субботу ходил на концерт Ромеро — композитора саундтрека Героев Меча и Магии. Очень крутой концерт, ост героев и сам по себе мегаэпичен, а живьем все это слушается вообще улетно. Хотя, конечно, можно немного попридираться — лично мне показалось что тему Fortress немного недожали — но никаких проблем со звучанием инструментов (на ютубах к прошлогоднему концерту писали якобы скрипок не слышно) мною замечено не было. Все жахало как надо и когда надо. Отдельный респект другу Ромеро, который сыграл на саксофоне, насколько понимаю, темы из четвертых героев (в основном игрались темы третьих).

Сам Ромеро показался весьма ненапряжным дядькой, довольным возможностью полабать свои треки с настоящим оркестром, о чем, собственно, он сам и рассказал.

 

Речей было не очень много, было забавно узнать что источником вдохновения были в том числе боевики 80х с Ван Даммом и прочими =)))

 

В сети пока нет полной записи концерта (надеюсь она таки появится), но дающий более-менее полное представление вариант есть и в неплохом качестве.

Надеюсь это не последний заезд Ромеро к нам, хочу еще =)

Заполнение mp3-тегов скриптом

Довелось скачать саундтрек к игре в виде кучи файлов без тегов вообще.

Захотелось на скорую руку заполнить хотя бы названия и номера треков (альбом/год/жанр — одинаковые для всех, с этим все сильно проще).

Для начала из имени каждого файла нужно вычленить название трека. Используем sed в однострочном цикле для разделения имени файла на три блока. Блоки в sed выделяются экранированными скобками: начало — \(, конец — \)

 
 
  1.                                                        вычленяем блок №2
  2.                                                         |             |
 
 
  1. for file in *.mp3; do name=$(sed "s/\(^.*_.\{1,3\}_\)\(.*\)\(\.mp3\)/\2/" <<< $file); echo $name ; done;
 
 
  1.                                           |                     |    
  2.            блок №1: начало строки, любые символы,          блок №3: .mp3
  3.                     подчеркивание, 1-3 любых символа,
  4.                     подчеркивание

Вывод:

 
 
  1. chat_thiscouldbeAWESOME
  2. lab sewers
  3. chat_downthe
  4. ...

(да, если вы решаете проблему с помощью регулярных выражений — у вас уже 2 проблемы, но в данном случае это отличное решение).

Убедившись что имена получаются корректные, меняем echo $name на редактор тегов mid3v2

 
 
  1. for file in *.mp3; do name=$(sed "s/\(^.*_.\{1,3\}_\)\(.*\)\(\.mp3\)/\2/" <<< $file); mid3v2 -t "$name" "$file" ; done;

Самое сложное сделано. Теперь номера треков (всего их 46, так что это число я подставляю вручную):

 
 
  1. i=1; for file in *.mp3; do mid3v2 -T  "${i}/46" "$file" ; ((i+=1)); done;

Все одинаковые для треков теги заполняются совсем просто, например год:

 
 
  1. for file in *.mp3; do mid3v2 -y 2010  "$file" ; done;

PS: утилита mid3v2 (рекомендуется как полностью поддерживающая v2/utf8-теги) входит в питоновский пакет mutagen и ставится примерно так (для debian/ubuntu)

 
 
  1. apt install python3-mutagen

или так (установка в пользовательский профиль из репозитория pypi)

 
 
  1. pip3 install --user mutagen

Шифрованный SOCKS5-прокси на своем сервере

Я уже писал как поднять шифрованный прокси средствами ssh, и до сих пор я сам использовал именно этот метод. Однако при всех его плюсах, таких как проверенность протоколов и механизмов, и «изкоробочность» (при условии, конечно, наличия под рукой своего сервера), есть и довольно большой минус: задача проксирования для ssh не первоочередная и справляется он с ней не лучшим образом.

Поэтому я в очередной раз загуглил и нашел более адаптированное решение предназначенное именно для проксирования с шифрованием — https://shadowsocks.org/.

Это клиент-серверная штука, изначально написанная на питоне, но существующая и в переписанном, если память не изменяет, на C варианте.

Установка сервера (debian/ubuntu)

Ставим софт

 
 
  1. apt install shadowsocks-libev rng-tools

Настраиваем

/etc/default/rng-tools
 
  1. HRNGDEVICE=/dev/urandom
/etc/shadowsocks-libev/config.json
 
  1. {
  2. "server":"SERVER_IP",
  3. "server_port":PORT,
  4. "local_port":1080,
  5. "password":"PA$$W0RD",
  6. "timeout":60,
  7. "method":"aes-128-gcm"
  8. }

Установка клиента

Клиенты для всяческих платформ указаны на официальном сайте. Лично я для винды использовал shadowsocks-windows (портативная версия), а для линукса — shadowsocks-qt5, доступный в штатном репозитории дебиана.

Настраиваются клиенты максимально похоже — все что нужно указать: ip и порт сервера, алгоритм шифрования и пароль, указанные при настройке сервера; а также локальный порт на клиенте, к которому будут подключаться наши приложения (браузер и т.д.)

В самом приложении указываем настройки прокси:

SOCKS5
IP: 127.0.0.1
PORT: 3128 (ну или какой вы укажите при настройке клиента)

Например в файрфоксе это будет выглядеть так:

Ну и все, должно работать.

Безопасность сервера (настройка fail2ban)

Само собой мы защитили подключение паролем, но банить по айпи всяких пытающихся пролезть — лишним не будет. Докидываем 2 файла в конфиг fail2ban (если он у вас установлен)

/etc/fail2ban/filter.d/shadowsocks-libev.conf
 
  1. [INCLUDES]
  2. before = common.conf
  3. [Definition]
  4. _daemon = ss-server
  5. failregex = ^\w+\s+\d+ \d+:\d+:\d+\s+%(__prefix_line)sERROR:\s+failed to handshake with <HOST>: authentication error$
  6. ignoreregex =
  7. datepattern = %%Y-%%m-%%d %%H:%%M:%%S

и

/etc/fail2ban/jail.d/shadowsocks-libev.conf
 
  1. [shadowsocks-libev]
  2. enabled = true
  3. filter = shadowsocks-libev
  4. port = PORT
  5. logpath = /var/log/syslog
  6. maxretry = 3
  7. findtime = 3600
  8. bantime = 3600

(PORT — порт подключения к серверу, указанный нами в конфиге сервера)

Таким образом буквально минут за 5-10 можно сделать для себя адекватный прокси с шифрованным каналом.

Коды счетчиков Perfmon Windows (для использования с Zabbix и не только)

Список кодов монитора производительности, для использования с заббиксом наподобие

Average disk read queue length — perf_counter[\234(_Total)\1402]

Windows Server 2016 Perfmon Counters and Codes

Syncthing+EncFS = Синхронизация файлов для параноика

ВНИМАНИЕ!!! ОЧЕНЬ МНОГО БУКОВ!!!!!

Шучу,  очень много картинок и вспомогательных видео, а все описанное в сухом остатке делается минут за 10-15. Погнали!

Предисловие

В нашу эпоху больших корпораций, которые предоставляют тысячу и один удобный сервис, возникает вопрос — нужно ли заморачиваться и использовать «что-то свое»? У нас есть почта, есть соцсети, мессенджеры и, конечно, сервисы для хранения и синхронизации данных — бери не хочу. Но в тот момент, когда мы размещаем свои данные на публичных сервисах, мы автоматически лишаемся определенных прав на этот контент, и я даже не буду говорить про случаи, когда компании прямо пишут в соглашениях что все права на размещенный контент присваиваются компании. В первую очередь я говорю о непосредственной безопасности данных, которые могут утекать в результате взломов таких сервисов как dropbox или iCloud. Это могут быть как данные учетных записей, как в первом случае, так и сами данные в открытом виде — как нашумевшем случае (точнее «случаях») с iCloud. Нужно понимать, что может быть лично вас никто взламывать и не хочет, но ваши важные данные, такие как сканы документов, или рабочие файлы, могут «угнать» просто в общей куче.

Если вы согласны, что это непорядок — сейчас я расскажу как обезопасить свои файлы и организовать их синхронизацию между компьютерами и мобильными устройствами — бесплатно и с объемом файлов, ограниченным лишь вашими жесткими дисками. Читать далее…