Визуально все хорошо, могу на ноды зайти (две канистры получается со своим вебом и морда управления), сейчас там мигает один винт на замену разве что, но чуйка подсказывает, что выпадение одного винта не должно вырубать доступ целиком к системе.
Связь идет по 4 (по 2 порта на ноду) fc - 1 и 3 порт идут на сервер1, 2 и 4 порт идут на сервер 2
Пишет, что хосты отключены
Пишет, что кэш поврежден
Хосты неактивны, индикация меняется в вебе когда сервер грузится например, видимо чего то опрашивает
Сами они активны
Вроде все хорошо
Из хороших новостей - у меня есть дамп настроек на начало месяца, я могу запустить восстановление системы из веба, но он восстанавливается с последних дампов, как ему подсунуть старый я так и не понял.
Там и сейчас дампы лежат, но как запустить нужный по дате я не пойму
получается, что на момент перезагрузки серверов все 4 fc (ну если ребутнуть 1, то соответственно 2 fc) отключаются, система не видит схд и не грузится
Возможно поможет загрузка старого дампа, возможно поможет удаление кеша
В общем хотелось бы оживить это все, но опыта маловато
Есть вот такая материнская плата. Есть задача поставить на эту плату WIN 7 или Server 2008 R2. Операционка ставится, но не работает USB, вообще никакие, ни 3.0 ни 2.0. При полном отсутствие портов PS/2 задача приобретает оттенок невыполнимой. Подключить какие-то устройства управления просто невозможно. Интеграция в дистрибутив всех доступных в google драйверов USB 3.0 успеха не принесла. Установка через LiveCD, с помощью специальной программмы успеха не принесла. Может есть вероятность как-то подогнать драйвера от WIN10-11 ? Или ещё какое нетривиальное решение. Помогите пожалуйста. P.S. Вопрос адекватности вопрошающего и целесообразности задачи не стоит. =)
Дано, очередной небольшой отель на 30 номеров, но херовый по геометрии вытянутый в линию с изгибами, по сути первый этаж многоэтажного дома...
Имеется 5шт роутеров: Главный черно-красный микрот единственный достойный экземпляр, три подключенных к нему по кабелю бело-серых RB951, древних 100мегабитных, только с wi-fi 2.4 и за интернет в двух самых удаленных VIP номерах отвечает скромный keenetic start подключенный в режиме ретранслятора...
Естественно в отеле 5 сетей с разными SSID, по количеству роутеров, каждый роутер исполняет роль DHCP сервера... короче для постояльцев прогулка из номера до ресепшен или до кухни, заставляет постоянно переключать wi-fi сети, но это полбеды, как говориться работает и хер с ней... но пришла новая напасть обязательная web авторизация всех гостей(обычно по номеру телефона смс или звонку, такое требование закона, никакой анонимности)... а так как я такое уже делал трижды меня позвали по сарафану и в четвертый отель... в теории все просто, перенастраиваем сеть, красно черный микрот делаем единственным DHCP сервером, все остальные роутеры в режим AP(точки доступа), далее подписываем удаленно договор с провайдером услуг web авторизации, он скидывает конфиги для главного микрота, скидывает инструкцию как служебным устройствам(smart tv, ip телефонам, терминалам) по mac адресам прописать подключение без веб авторизации и вроде бы три часа работы и всё понеслось...
Если бы не ебучий keenetiс Start, который в режиме усилителя сигнала(репитера) категорически отказывался устройства перенаправлять на страницу авторизации... причем для устройств mac адреса которых были в списке исключений, интернет keenetiс прекрасно пробрасывал, а вот авторизацию нет, перепробовал все настройки но всё бесполезно... техподдержка невнятно мычала, что мы не рекомендуем использовать репитеры и усилители, подключайте все промежуточные роутеры кабелем...
Вот тут и начинается поиск решения, которое определяет инженер вы или нет... Я думаю, а что будет если keenetic с одним из микротов поменять ролями, пусть keenetik будет в режиме точки доступа по кабелю, а микротик усилителем сигнала по wifi(там же есть режим CPE, правда допиливать его надо руками, ибо он по умолчанию принимает интернет по wi-fi, а раздает его только в кабель)... честно повезло что питание и там и там 12 вольт и роутеры очень просто поменять местами, не ища блоки питания под потолком... и keenetiс будучи подключенным по кабелю, прекрасно начал перенаправлять клиентов подключенных по wi-fi на страницу web авторизации, ну не чудо ли...
Теперь мучаем микротик, щелкаем quickset и переводим микрот в режим репитер(CPE), цепляем по wifi к другому микротику, в кабеле интернет появился web авторизация ожила, но wi-fi собака такая не раздает... ладно идём в раздел wireless ищем там наш адаптер и жмем кнопку setup repeater, указываем название сети и пароль, такой же как у остальных четырех роутеров в отеле, и вуаля все заработало мир опять спасен...
Единственное, что у меня после всей этой беготни опять возникло ощущение что я сработал за еду, взял всего 5тр, по количеству настроенных роутеров... 5тр не хватит чтобы оплатить даже сутки в этом отеле, надо было сразу озвучить 10, но я опять продешевил, но раз я это понимаю значит продолжаю работать над собой...
Всем доброго времени суток! Друзья, столкнулся с проблемой. Подарили Яндекс модуль ТВ, все круто, работает, НО, очень хочется смотреть свои фильмы скаченные на комп. Флеш разъемы в модуле нет, телек не поддерживает их, знаю что можно через VLC проигрыватель, помогите пожалуйста неопытному юзеру советом как побороть преграду. Ввиду неопытности, буду крайне признателен, если распишите пути решения как для пятиклассника. Всем заранее спасибо, обнял, приподнял))
P.s.: не ругайтесь, реально не знаю как сделать, форумы читал, ничего не получается(
есть задача проброса/переноса монитора VGA. для видео наблюдения. В данное время монитор смотри в миниПК от Хреновы. Заказчик хочет монитор перенести в другое помещения. но сам мини ПК переносить не может (тут долго писать почему).
как работает: просто, по витой паре можно переносить управления вообще всего ПК на расстоянии до 150м.
ТЕПЕРЬ важное, могу прокинуть эту схему через роутер, или тянуть отдельную ПРЯМУЮ жилу витой нужно для монитора ?? нечего путного не нашел в сети. даже на забуграх только схема прямого подключения описана. как понимаю у железки логики нет вообще. и как она будет себя вести при пробросе через роутер ХЗ.
з.ы.
не реклама!
за русский не пинайте. не грамотный я в это сфере...увы (
Комрады! спасибо всем кто отписался. Помогли очень. Указали много нового чего я не знал. Сила пикабЫ все же. всех с уважением благодарю!!
Seq — это сервер поиска и анализа структурированных журналов приложений в режиме реального времени. Можно смотреть на него как на своего рода альтернативу для ELK. Хотя лицензия тут тоже не свободная, а использование для юрлиц платное. Но для домашней лаборатории для меня в своё время это оказался превосходный вариант (в принципе я до сих пор считаю так, потому что времени на развертывание Seq тратится несравнимо меньше чем на ELK. Для экспериментов самое то.
В данной статье проведу нехитрую операцию по развертыванию и настройке fluentbit и seq в docker, и настрою отправку собранных логов из fluentbit в seq.
Начнём с создания отдельной сети для наших контейнеров:
docker network create fluent-bit_seq
Установка Seq
Теперь захэшируем пароль, который будет использоваться.
PH=$(echo 'seqPass%%' | docker run --rm -i datalust/seq config hash)
Убедимся, что переменная действительно содержит пароль:
По дефолту fluentbit отправляет вывод на stdout. Так что с помощью docker log всегда можно посмотреть что с ним происходит. Наша задача как раз исправить дефолтное поведение.
docker logs fluent-bit
Настройка отправки логов в Seq
Отправляемся в конфиг fluentbit и ищем следующую секцию:
# fluent-bit.conf
[OUTPUT]
name stdout
match *
Заменяем её на указанную ниже, с последующим сохранением:
# fluent-bit.conf
[OUTPUT]
Name http
Match *
Host seq
Port 5341
URI /api/events/raw?clef
Format json_lines
Json_date_key @t
Json_date_format iso8601
Log_response_payload False
Теперь перезапустим контейнер с fluentbit для принятия изменений:
docker restart fluent-bit
Возвращаемся в браузер, открываем Seq, логинимся и теперь можем видеть, что логи из fluentbit отправляются прямиком туда:
Вводишь номер объекта в скрипт, он ищет на нём ПК в Active Directory и выдаёт информацию по количеству свободного места на диске и размеру диска. Выделенная область не совсем понятна. Знак доллара, собака, вот это вот всё. Если есть возможность разжевать цикл для тупых) и как это склеивается с командлетом.
Write-Host "ERROR!" $PCs[$i].Name $_ -ForegroundColor Red
}
}
Clear-Variable -Name "PCs"
}else{
Write-Warning "The entered value is incorrect"
}
Немного теории про переменные:
Переменная — это единица памяти, в которой хранятся значения. Рекомендуется, чтобы имена переменных включали только буквенно-цифровые символы и символ подчеркивания (_). Имена переменных, включающие пробелы и другие специальные символы, трудно использовать и следует избегать.
В PowerShell существует несколько различных типов переменных.
Созданные пользователем переменные: созданные пользователем переменные создаются и поддерживаются пользователем. По умолчанию переменные, созданные в командной строке PowerShell, существуют только во время открытия окна PowerShell. При закрытии окон PowerShell переменные удаляются. Чтобы сохранить переменную, можно добавить ее в профиль PowerShell. Можно также создавать переменные в скриптах с глобальными, скриптами или локальными область.
Автоматические переменные: автоматические переменные хранят состояние PowerShell. Эти переменные создаются PowerShell, и PowerShell изменяет их значения в соответствии с требованиями, чтобы обеспечить их точность. Пользователи не могут изменить значение этих переменных. Например, $PSHOME переменная сохраняет путь к каталогу установки PowerShell.
Переменные предпочтения: переменные предпочтения хранят пользовательские настройки для PowerShell. Эти переменные создаются PowerShell и заполняются значениями по умолчанию. Пользователи могут изменять значения этих переменных. Например, $MaximumHistoryCount переменная определяет максимальное количество записей в журнале сеансов.
Теперь с картинками:
Переменные в powershell начинаются со знака "$". Имена переменных не зависят от регистра, то есть переменные $nameVar и $NAMEvar - одна и та же переменная. Присвоение значения переменной происходит через оператор "=".
Имена переменных могут включать пробелы и специальные символы. Например: ${name of variable}. Использование такой вариации имени сомнительно, но поддерживается.
После присвоения значения переменная будет иметь свой тип. У всех типов переменных есть общие и уникальные свойства и методы, к которым можно обращаться через точку. Для того, чтобы узнать какие методы и свойства есть у текущей переменной, можно воспользоваться командой Get-Member, как в примере ниже.
Тип переменной $name - System.String, то есть строковый.
Для работы с массивами объектов в переменных 2 очень важных свойства:
Length (длина) и Count (количество). Зачастую данные свойства используют для определения элементов в массиве, но часто ошибочно используют Length, когда желательно использовать Count. Дело в том, что свойство Length действительно в большинстве сценариев отображает количество элементов массива, кроме случая, когда в массиве один элемент строкового типа. В этом случае свойство Length выдаст количество символов в строке.
Примеры получения этих свойств ниже:
Разница в значении свойств Length и Count проявляется в примере переменной $var_text. Свойство Length отобразило количество символов в строке (длину). Свойство Count отобразило отобразило количество строк (или объектов в массиве). Поэтому для корректности крайне рекомендуется использовать свойство Count для определения количества элементов массива.
Анализ
Первая проблема данного кода - обильное использование алиасов, не прозрачных конструкций и отсутствие комментариев. Попробуем разобраться, попутно изменив код на более читаемый и оставив комментарии.
Начнём с того, что приведем скрипт в читаемый вид, выровняв основные блоки кода:
Отформатированный в читаемый вид изначальный текст скрипта.
На вход описанному блоку скрипта должна прийти переменная $SearchBase со значением отличным от символа "0". Открывает выполнение кода условный оператор if () else. Условие проверки странное, так как минимально необходимая обычно проверка - это проверка на пустоту какой-либо необходимой для выполнения блока кода переменной, но для этого достаточно оставить в проверке if переменную без операторов сравнения. Здесь же у нас if получит TRUE в случае, если $SearchBase не будет эквивалентен символу "0".
Учитывая, что нам не известно какие значения $SearchBase может принимать, менять логику проверки не стоит. С учетом анализа дальнейшего использования данной переменной, становится ясно, что она используется для определения области в домене Active Directory, из которой будут выбираться объекты компьютеров в командлете Get-ADComputer
Исходя из этого (и из примеров использования Get-ADComputer), переменная $SearchBase должна содержать строку DN (Distinguished Name) контейнера Active Directory в формате
Допустим, в переменной $SearchBase у нас все таки что-то похожее на Distinguished Name контейнера в AD (либо корень домена - "DC=domainName,DC=local, такое определение области тоже имеет место быть). Идем дальше: алиас select меняем на полное имя командлета Select-Object
Здесь у нас происходит следующее: сначала получаем все объекты компьютеров из AD по указанному контейнеру в переменной $SearchBase.
Затем по конвейеру (символ | ) результаты выполнения этой команды передаются на команду Select-Object:
Командлет Select-Object выбирает указанные свойства объекта или набора объектов. В нашем случае из свойств объектов компьютеров Active Directory выбирается только свойство Name. Набор свойств по умолчанию, доступных в объекте компьютера, возвращаемый командлетом Get-ADComputer представлен ниже.
Затем все имена компьютеров сохраняются в переменную $PCs. То есть, если после оператора присвоения переменной (символ =) происходит выполнение нескольких командлетов с передачей результатов по конвейеру, в переменную будет сохранен результат выполнения последнего командлета (в нашем случае это Select-Object).
Таким образом, в переменную $PCs (при корректной передаче $SearchBase, естественно) будет сохранен массив свойства Name объектов компьютеров из AD. Примерно следующего вида:
Далее идет цикл For для обработки элементов массива переменной $PCs.
В условиях цикла For стоит перебор по одному элементу массива $PCs, начиная c нулевого ($i=0; $i -lt $PCs.Length; $i++). Условием остановки цикла является перечисление всех объектов из переменной. Для решения данной задачи немного проще использовать цикл Foreach, но про него поговорим в следующей статье. Единственное исправим $PCs.Length на $PCs.Count
Затем, для каждого элемента массива выполняется конструкция Try {} Catch {}.
Блок Try {} будет выполняться для каждого элемента массива, блок Catch {} будет выполнен только в случае, если в блоке Try будет зарегистрирована исключительная ситуация (ошибка при выполнении командлета, например).
В блоке Try {} выполняется три командлета:
получение информации о Wmi-объекте win32_volume (раздел диска) с удаленного компьютера (командлет Get-WmiObject). Первый параметр командлета Get-WmiObject -Class является позиционным, и его можно не указывать, но такая практика не является рекомендуемой, так как это усложняет чтение кода. Второй параметр -ComputerName определяет имя сервера \ рабочей станции из массива переменной $PCs. Так как в переменной $PCs у нас хранится массив свойств Name, то к этому свойству через символ точки и обращаемся, при этом указав порядковый номер элемента с помощью квадратных скобок. То есть, в записи $PCs[$i].Name - $PCs это весь массив свойств имен компьютеров из Active Directory. В квадратных скобках указан текущий номер элемента массива в цикле For, а если это первая итерация, то там у нас будет 0. И через символ точки "." мы получаем имя компьютера для передачи в параметр -ComputerName. Параметр -ErrorAction определяет поведение консоли при обработке вероятной ошибки (исключительной ситуации, например компьютер целевой не доступен и не удается получить информацию), при выполнении данного командлета.
Значение параметра -ErrorAction Stop означает, что в случае исключительной ситуации, дальнейшее выполнение блока Try {} будет прекращено в рамках данного прохода цикла For и будет выполнен код из блока Catch {}, который как раз и служит для отработки кода в исключительных ситуациях.
Для того, чтобы понимать происходящее в коде, крайне важно понимать с каким объектом (и какие у него свойства) в данный момент происходит действо.
Для примера, разберем какого типа возвращает объекты командлет Get-WmiObject. Для этого попробуем выполнить следующее:
Таким образом, можно увидеть какие свойства и какие значения этих свойств есть у объекта типа win32_volume. Вывод свойств по умолчанию у объектов разный, и зачастую избыточен, поэтому после того, как вы поняли какие свойства вас интересуют, полезно будет научиться использовать следующие командлеты:
Select-Object - командлет, используемый для отображения только указанных свойств переданных по конвейеру объектов:
Where-Object - командлет, используемый для фильтрации массива объектов по условному свойству (или совокупности свойств). Рассмотрим пример ниже с массивом объектов-служб в переменной $services. Допустим, нам необходимо отфильтровать и получить только сервисы в переменную $targetService которые имеют в DisplayName слово "Update" и у которых статус "Running":
Фигурные скобки с условиями для командлета Where-Object практически всегда используются, поэтому просто привыкните пока использовать данный командлет в таком режиме. Из нового здесь у нас использование переменной $_ - что это такое и зачем она нужна.
Если вкратце, то $_ это алиас для автоматической переменной $PSItem PowerShell, используемый в скриптблоках, обрабатывающих текущий объект, например в конвейере. То есть $_ хранит в себе текущий объект, переданный по конвейеру.
Вернемся к нашим баранам
Далее по скрипту передача по конвейеру Wmi-объекта на командлет Where-Object с целью фильтрации. Условием для фильтрации является эквивалентность свойства Name WMI-объекта значению "C:\". То есть, фильтр выставлен, чтобы дальше по конвейеру пошли только объекты, которые являются логическим диском C:\.
Затем используется уже известный командлет Select-Object, но с интересным способом изменения отображаемых полей свойств приходящего WMI-объекта при отображении:
свойство __SERVER меняется ComputerName
свойство Capacity останется в таком же виде, но значение его будет изменено согласно формуле $_.Capacity/1GB.
свойство FreeSpace останется в таком же виде, но значение будет изменено согласно формуле $_.FreeSpace/1GB.
Также будет выведено свойство Name без изменений
Касательно изменений значений объема и свободного - $_Freespace / 1GB.
Такого рода преобразование используется в случаях когда значения свойств хранятся с байтах (а это наш случай), а мы хотим вывести значение в гигабайтах.
Затем идет блок кода Catch, в котором отработает командлет Write-Host - который красным цветом напишет в консоль "ERROR!", имя текущего сервера, по которому не удалось отработать блок Try. Далее, в конце каждой итерации сработает командлет очистки переменной $PCs. Затем описано блок Else, скриптблок которого отработает в случае, если условие $SearchBase -ne "0" не будет выполнено. Скриптблок содержит один командлет, который напишет текст "The entered value is incorrect" в консоль.
Конечный, немного поправленный блок скрипта выложу картинкой