Showing posts with label regex. Show all posts
Showing posts with label regex. Show all posts

Thursday, 3 October 2024

Автоматическая настройка proxy сервера.

Всем привет. 

В сети сравнительно мало информации об такой замечательной вещи как «Автоматическая настройка прокси сервера». Суть технологии заключается в том, что браузер читает специальный файл написаный на языке JavaScript, в котором определена только одна функция:

function FindProxyForURL(url, host)

{ .. }

где,

url – полный URL запрашиваемого документа

host – имя поста извлекаемое из URL. Этот параметр необходим только для удобства. Он содержит всё от :// и до первого / или :. Номер порта не включается в этот параметр.

Функция возвращает строку содержащую один или несколько способов доступа к запрашиваемому документу. Формат строки следующий:

null - если строка null, то использовать прокси сервер не нужно;

DIRECT - прямое соединение без использования прокси сервера;

PROXY host:port - определяет какой именно прокси сервер необходимо использовать;

SOCKS host:port - определяет SOCKS сервер который необходимо использовать.

Sunday, 5 May 2024

Используем SetX.

Всем привет.

В отличие от известной SET утилита SETX предназначена для создания или изменение переменных среды в системной среде. Переменные можно задавать с помощью аргументов, параметров реестра или ввода из файла.

Три способа выполнения SetX:

SETX [/S <система> [/U [<домен>\]<пользователь> [/P [<пароль>]]]] var <значение> [/M]

SETX [/S <система> [/U [<домен\>]<пользователь> [/P [<пароль>]]]] var /K <путь> [/M]

SETX [/S <система> [/U [<домен\>]<пользователь> [/P [<пароль>]]]] /F <файл> {var {/A x,y | /R x,y строка}[/M] | /X} [/D <разделители>]

Параметры

/S <система> Подключаемый удаленный компьютер.

/U [<домен>\]<пользователь> Пользовательский контекст, в котором должна выполняться эта команда.

/P [<пароль>] Пароль для этого пользовательского контекста.

var Задаваемая переменная среды.

<значение> Значение, назначаемое переменной среды.

/K <путь> Задание переменной по информации, содержащейся в параметре реестра. Путь должен задаваться в формате куст\раздел\...\параметр.

/F <файл> Имя текстового файла, который следует использовать.

/A x,y Задание абсолютных координат файла (строка X, элемент Y) как параметров поиска в файле. (строка X, элемент Y) как параметров поиска в файле.

/R x,y строка Задание координат относительно значения "строка" как параметров поиска.

/M Указание создания переменной среды на системном уровне (HKEY_LOCAL_MACHINE). По умолчанию переменная среды создается в разделе HKEY_CURRENT_USER на уровне пользователя.

/X Отображение содержимого файла с координатами x,y.

/D <разделители> Указание дополнительных разделителей, таких как "," или "\". Встроенные разделители: символы пробела, табуляции, возврата каретки и перевода строки. Дополнительным разделителем может быть любой знак ASCII. Максимальное число разделителей, включая встроенные, равняется 15.

/? Вывод справки по использованию.

Wednesday, 21 September 2022

Удаленно включить RDP в Windows.


Всем привет.

Иногда случается что на удаленном хосте забыли включить RDP. Это можно поправить не бегая к нему лично, т.е. вы можете удаленно включить RDP на любом компьютере Windows. Но для этого у вас должен быть удаленный доступ к целевому компьютеру (через PowerShell или WMI) и ваша учетная запись состоять в группе локальных администраторов на целевом компьютере.

В принципе все сводится в правке ключа реестра  fDenyTSConnections на целевом компьютере RemHost.

Это понятно? Тогда приступим. Выполним настройку RDP удаленно из командной строки с помощью встроенной утилиты sc (позволяет создавать, управлять или удалять службы Windows):

sc \\RemHost config RemoteRegistry start=demand

sc \\RemHost start RemoteRegistry

Затем на своем компьютере:

  • запустите редактор реестра regedit.exe
  • выберите в меню Файл пункт Connect Network Registry (Подключить сетевой реестр)
  • укажите имя RemHost или IP адрес удаленного компьютера, на котором нужно включить службу RDP;
  • перейдите в раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server;
  • найдите параметр fDenyTSConnections (тип REG_DWORD). Если данный ключ отсутствует – создайте его. 
  • измените его значение на 0, чтобы включить RDP.

Для отключения RDP доступа нужно изменить значение fDenyTSConnections на 1.

Сразу после этого без перезагрузки удаленный компьютер должен стать доступным по RDP.

Saturday, 12 February 2022

Сброс пароля в Windows 10.


Всем привет.

Иногда попадаются хосты c Windows 10 на которых локальный админ давно не использовался и поэтому пароль к нему просто забыт. Поэтому нужен простой способ его сбросить.

Для этого нам понадобится флешка с установочным образом Windows 10. О том, как ее сделать, написано здесь https://remontka.pro/rufus-3-bootable-usb/.

Скачиваем в сети ISO-образ с Windows 10, затем используя утилиту Rufus (https://rufus.ie/), создаем загрузочный диск на флешке. Далее следует перезагрузить нужный хост и войти в BIOS, нажав Del, F2, F8, F9, F11 или F12. Выбираем загрузку с USB-drive. Запоминаем изменения и загружаемся с нашей флешки 

Идем по шагам:

1. Когда появится интерфейс установки Windows 10, нажимаем Shift + F10 или Shift + Fn + F10 - на некоторых ноутбуках, если первая комбинация не сработает. Открывается командная строка.

2. Вводим команду regedit и нажмите Enter. Запускаем редактор реестра.

3. В открывшемся редакторе реестра выбираем справа папку HKEY_LOCAL_MACHINE. Затем выбираем команду по меню Файл, Загрузить куст.

4. Открываем путь к файлу C:\Windows\System32\config\SYSTEM. В режиме восстановления могут путаться имена дисков, например диск "С" отображается как "Е". Это случается часто. Узнать, на каком диске у нас реальная (не с флешки) папка Windows, можно, посмотрев их содержимое.

5. Система предложит ввести имя для куста реестра. Вводим любое, но чтобы оно не совпадало с существующими, например Mimoza, и жмем ОК.

6. Открываем папку HKEY_LOCAL_MACHINE на панели слева, в ней - Mimoza, а в нем - раздел Setup.

Friday, 17 September 2021

Регулярные выражения.

Всем привет.

Есть такая штука как Регулярные выражения. Тот кто ими пользуется знает что это как еще один язык выучить. И их знание не абы какой плюс при приеме на работу. Но все равно диалекты регулярных выражений в контексте других языков программирования могут быть разными. Я ими пока не владею, потому что "я ведь не волшебник, я только учусь".

А пока могу рекомендовать отличные курсы по регулярным выражениям, на которых страдаю сам:

1. Using Regular Expressions with Kevin Skoglund, lynda.com | Using Regular Expressions (2011).

2. Jeffrey Way - Regular Expressions - Up And Running,

http://code.tutsplus.com/courses/regular-expressions-up-and-running

И на сегодня для вас небольшая шпаргалка по использоваию регулярок с JavaScript.

<script type="text/javascript">

//Создание

var pattern = new RegExp(pattern [, flags]); //Полная форма

var pattern = /pattern/flags; //Сокращенная форма записи (литеральный формат)

//Динамическое создание регулярного выражения

var emails = ['gmail', 'yahoo', 'hotmail', 'live', 'rambler'];

var re = new RegExp(emails.join('|', 'i')); //gmail|yahoo|hotmail|live|rambler/i

/**

где pattern — шаблон регулярного выражения,

     flags — способ поиска, может принимать:

          g — глобальный поиск (обрабатываются все совпадения с шаблоном поиска);

          i — не различать строчные и заглавные буквы;

          m — многострочный поиск.

*/

</script>

Wednesday, 8 April 2020

Регулярные выражения в PowerShell #2.

Всем привет.

Сегодня еще кое что из книги "Keith Hill, Эффективное программирование в Windows PowerShell. 2009". На сей раз еще раз про регулярные выражения. 

Известно что PowerShell основан на .NET Framework. То есть, он построен с использованием .NET Framework и предоставляет возможности .NET Framework пользователю. Одна из наиболее удобных возможностей в .NET Framework - класс Regex в пространстве имён System.Text.RegularExpressions. Это очень мощный механизм регулярных выражений. PowerShell использует его в ряде сценариев с помощью:
• оператора -match
• оператора -notmatch
• параметра -Pattern командлета Select-String.

Конечно,   чтобы   использовать   эти   операторы   и   Select-String   максимально   эффективно, необходимо хорошо понимать применение регулярных выражений. Справочная система PowerShell содержит раздел с именем "about_Regular_Expression", который вы можете вызвать так:
PS> help about_reg*

Данный раздел представляет собой лишь краткое справочное руководство по различным метасимволам, с его помощью вы не научитесь создавать мощные регулярные выражения. Чтобы узнать, как получить максимальную отдачу от регулярных выражений, и, следовательно, PowerShell, я очень рекомендую прочитать книгу Jeffrey Friedl Mastering Regular Expressions (Джеффри Фридл, Регулярные выражения). В   механизме   поддержки   регулярных   выражений   PowerShell   существует   один   недостаток,   который необходимо знать. Большинство других скриптовых языков поддерживают синтаксис, позволяющий обнаружить все вхождения шаблона в строке. Например, в Perl я могу сделать так:

$_ = "paul xjohny xgeorgey xringoy stu pete brian"; # PERL script
($first, $second, $third) = /x(.+?)y/g;

К сожалению, командлет Select-String не поддерживает эту возможность в версии 1.0. Тем не менее, вы можете обойти это ограничение, используя класс System.Text.RegularExpressions.Regex напрямую. Нет необходимости   указывать   имя   класса   полностью,   PowerShell   имеет   для   него   псевдоним   [regex]. 

Например:
PS> $str = "paul xjohny xgeorgey xringoy stu pete brian"
PS> $first,$second,$third = ([regex]'x(.+?)y').Matches($str) |
>>Foreach {$_.Groups[1].Value}
PS> $first
john
PS> $second
george
PS> $third
ringo

Одна из вещей, за которой необходимо тщательно следить - написание регулярного выражения для поиска во всей строке. Например, вы решили использовать Get-Content для получения содержимого файла и применения к нему регулярного выражения. В этом случае необходимо помнить, что Get-Content считывает файл частями - строка за строкой. Для применения регулярного выражения ко всему содержимому файла, необходимо будет преобразовать это содержимое в одну строку. Я могу сделать это в PowerShell 1.0, например, так:

PS> $regex = [regex]'(?<CMultilineComment>/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)'
PS> Get-Content foo.c | Join-String -Newline | Foreach {$regex.Matches($_)} |
>> Foreach {$_.Groups["CMultilineComment"].Value}
>>

Здесь я использовал командлет Join-String, разработанный PowerShell Community Extensions, который принимает отдельные строки, выводимые Get-Content, и создаёт из них одну строку. Также в примере использован именованный захват CMultilineComment. Этот пример демонстрирует, что при отсутствии возможностей в самом PowerShell, использование среды .NET может стать замечательным "запасным выходом".

Начиная с версии PowerShell 2.0 появились новые возможности, помогающие выполнять поиск в вышеописанном случае. Во-первых,   добавлен   оператор   объединения,   с   помощью   которого   можно   соединять  многострочный текст в одну строку. Во-вторых, в Select-String появились новые параметры, такие как -Context, -NotMatch и -AllMatches. Параметр AllMatches как раз подходит для решения предыдущей задачи. Вот как можно теперь выполнить поиск комментариев:

$pattern = '(?<CMultilineComment>/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)'
PS> (get-content .\foo.c) -join "`n" | Select-String $pattern -all |
>>Foreach {$_.Matches} | Foreach {$_.Value}

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

Sunday, 5 April 2020

Select-String и регулярные выражения в Windows PowerShell.

Всем привет.

Часто можно встретить вопросы связанные не столько с самим PowerShell, сколько с применением в нем регулярных выражений. Это и понятно - регулярные выражения (regexp, regular expressions) обладают огромной мощью, и способны сильно упростить жизнь системного администратора или программиста. Однако в мире системного администрирования Windows они мало известны и непопулярны - в cmd.exe практически единственная возможность их применения это утилита findstr.exe, которая обладает очень маленьким функционалом и использует жутко урезанный диалект регулярных выражений. В VBScript функционал регулярных выражений тоже хорошо запрятан, и практически не используется. А вот в PowerShell, авторы языка позаботились о том чтобы регулярные выражения были легко доступны, удобны в использовании и максимально функциональны. Тем более что с последним пунктом всё оказалось достаточно просто - PowerShell использует реализацию регулярных выражений .NET, а она является одной из самых функциональных и производительных, и даже способна потягаться даже с признанным лидером в этой области - perl.

Регулярные выражения это специальный мини-язык служащий для разбора (parsing) текстовых данных. С его помощью можно разделять строки на компоненты, выбирать нужные части строк для дальнейшей обработки, производить замены, и всё это с огромной гибкостью и точностью.

Впрочем знакомство с регулярными выражениями лучше начать не с них, а с более простой технологии которая служит подобным целям, с которой знакомы все Windows администраторы – с подстановочных символов. Наверняка вы не раз выполняли команду dir, и указывали ей в качестве аргумента маску файла, например *.exe. В данном случае звёздочка означает “любое количество любых символов”. Аналогично можно использовать и знак вопроса, он будет означать “один любой символ”, то есть dir ??.exe выведет все файлы с расширением .exe и именем из двух символов. В PowerShell'овской реализации подстановочных символов можно применять и еще одну конструкцию — группы символов. Так например [a-f] будет означать “один любой символ от a до f (a,b,c,d,e,f) ”, а [smw] любую из трех букв (s, m или w). Таким образом команда get-childitem [smw]??.exe выведет файлы с расширением .exe, у которых имя состоит из трех букв, и первая буква либо s, либо m, либо w. Неплохо, неправда ли? Так вот, по сравнению с возможностями регулярных выражения - это пустяки. 

Версия на печать

Популярное