scif_yar: (Default)
Пометка.
Запилить бота по перекидыванию из телеги в дрим. Избранное это хорошо, но не всегда удобно.
scif_yar: (Default)
В ходе написания очередной заметки утнкулся в проблему на ровном месте.
Invoke-WebRequest в принципе команда тупая, простая и я уже ее всяко использовал. Только затупил и ключи к ней не посмотрел.
Сейчас же стоит задача "просочиться через прокси", при этом прокси взять какой-то "любой".

Read more... )
scif_yar: (Default)
https://learn-powershell.net/2011/02/11/using-powershell-to-query-web-site-information/
https://evotec.xyz/quickly-test-multiple-proxies-with-powershell/

Причем в примере все работает, а у меня нет (во втором).
В смысле пример по второй ссылке точно работает, а я переписал - ниработаид.
ЧЯДНТ.
scif_yar: (Default)
$URL4SEND = "https://api.telegram.org/bot$MyToken/sendMessage?chat_id=$MyChatID&text=$MyText01"
$URL4SEND2 = '"'+$URL4SEND+'"'
start chrome $URL4SEND2
$Chrome4Kill = get-process -name Chrome
$TimeToSleep = 30
sleep $TimeToSleep
$Now=(GET-DATE)

foreach ($Chrome in $Chrome4Kill) {
$Timediff = NEW-TIMESPAN –Start $Now –End $Chrome.StartTime
$Timediff.Minutes
if ($Timediff.Minutes -ge -2) {stop-process $Chrome}
}

# посмотреть https://developer.chrome.com/extensions/tabs
# в части remove − chrome.tabs.remove(integer or array of integer tabIds, function callback)
# да и в части update − chrome.tabs.update(integer tabId, object updateProperties, function callback)
scif_yar: (Default)
Набросок
Давным-давно, в 2006 году Microsoft выпустила PowerShell 1.0 для тогда еще Windows XP, Vista и 2003 сервера.
Даже сейчас PowerShell можно рассматривать только как следующий шаг после вариантов Logo, вместо где-то наверное до сих пор используемых Delphi (или чего постарше), несмотря на наличие в нем циклов, классов, функций, вызова MS GUI, интеграции с Git и так далее.

Под катом:
Как написать очередного простого бота на Powershell и заставить его работать без webhook, белых IP, выделенных серверов, развертываемых виртуалок в облаке и прочая прочая - на обычном домашнем ПК с Windows.
Зачем:
Попросили написать, после очередного вопроса "а как сделать чтобы наш мониторинг отправлял сообщения не только мне, и как это все работает". Часть кода писалась под решение "на коленке" вопроса передачи алертов в телеграм.
Ничего нового в вопросе нет, почти все написанное раньше уже было на Хабре, например в статье Телеграмм-бот для системного администратора
Read more... )

А теперь вывод.
Я посмотрел код, написанный "тогда" - ну кроме того что он написан в стиле "нахрен отступы и правила именования", так еще и занимает 700 строк (ну правда с комментариями и функциями вида kiss_my_shiny_metal_ass), так что такое показывать - ну стыдобища вообще.
Причесывать же его для такого дна как хабр - откровенно лень.
И да, про временные затраты - написание текста на две страницы по образцу выше занимает примерно полтора-два часа. Потому что ссылки надо поставить, текст переписать, вот это все.
Польза же от текста на хабре отсутствует - в приват накидают сообщений про грамматику И ВСЕ.
scif_yar: (Default)
OceanStor 5300 V3, 5500 V3, 5600 V3, 5800 V3, and 6800 V3 Storage System V300R003C20 REST Interface Reference 02

https://support.huawei.com/enterprise/en/doc/EDOC1000126989?section=j005

Access a Huawei OceanStor Storage over REST-API per Powershell
https://forum.huawei.com/enterprise/en/give-me-a-short-kickstart-on-rest-api-over-powershell-please/thread/415687-891

http://mgtechhead.blogspot.com/2017/09/access-huawei-oceanstor-storage-over.html


$body = @{username = "admin";password = 'youwouldliketoknow';scope = 0}

$logonsession=Invoke-RestMethod -Method Post -Uri 'https://[IP]:8088/deviceManager/rest/xxxxx/sessions' -Body (ConvertTo-Json $body)

$sessionid=$logonsession.data.deviceid

As next i had trouble to authentificate again to send a GET request, the trick is to use on the first POST the "-SessionVariable" parameter to fill a variable with the Cookie and Header information "-SessionVariable WebSession" a subsequent Request need the Authentification in the Header, die iBaseToken from the POST Header and a well formed URI.

$logonsession=Invoke-RestMethod -Method Post -Uri https://[IP]:8088/deviceManager/rest/xxxxx/sessions -Body (ConvertTo-Json $body) -SessionVariable WebSession

$sessionid=$logonsession.data.deviceid
$iBaseToken=$logonsession.data.iBaseToken
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "admin",'youwouldliketoknow')))
$header = @{Authorization = "Basic $base64AuthInfo";iBaseToken = $iBaseToken}
$admhuawei = New-Object System.Management.Automation.PsCredential('admin',$(ConvertTo-SecureString -String ‘youwouldliketoknow’ -AsPlainText -force))
Invoke-RestMethod -Method Get "https://[IP]:8088/deviceManager/rest/$sessionid/lun/count" -Headers $header -ContentType "application/json" -Credential $admhuawei -WebSession $WebSession
WOW it worked !! Surely some things are redundant - but it works.

Кибер

Jul. 28th, 2019 10:23 am
scif_yar: (Default)
Kubernetes
https://www.coursera.org/courses?query=kubernetes

И повтор
https://mikefrobbins.com/2016/02/09/configuring-the-powershell-ise-for-use-with-git-and-github/

UPD
БЛЯТЬ.
Git с собой притащил Vi, который и редактирует коммиты.
Как общеизвестно, из Vi выход только перезагрузкой, тем более в винде.
https://stackoverflow.com/questions/13239368/git-how-to-close-commit-editor
scif_yar: (Default)
Имел на днях какую-то ебанину.
В функцию на повершелл отдается обьект (набор строк, точнее говоря конфигурация сетевой железки), а приезжает в функцию - конвертированный объект из двух объектов типа "офигенно здоровая строка".
Функцию в общем-то надо было вызвать один раз, поэтому переписывать типа "парсим внутри функции" я не стал, вытащил саму функцию в код, но все же - вот зе фак?

Ну и
https://mikefrobbins.com/2016/02/09/configuring-the-powershell-ise-for-use-with-git-and-github/
scif_yar: (Default)
Собсно проблема частных чатов телеги в том, что в приезжающем json (с ответом на сообщение) нет полей reply_to_message_text и reply_to_message_id
Вообще никаких идентификаторов на исходное сообщение, кроме своего номера самого сообщения
ВО КАК.
То есть можно запилить конечно отдельную процедуру сохранения из первого образца, по виду short \ long \ html (это уже было, да), и оно будет отображаться.
Как-то. Но ссылок на него не будет, и как его удобненько смотреть не понятно. (разве что команду делать отдельную, с ID. Кстати тоже вариант.
scif_yar: (Default)
До чего довел пош этот фигляр ПЖ!
Начал делать бота.
Дошел до классов, ну потому что а чего копипастить-то туда-сюда всякое ??
Сделал класс и плоди от него объекты.
https://www.petri.com/creating-first-powershell-class

ДОЖИЛ, докатился!!
(надо бы теги про повершелл поставить)

UPD
БЛЯЯЯЯЯЯЯЯ
PowerTip: Use PowerShell to Remove an Item from an Array
https://devblogs.microsoft.com/scripting/powertip-use-powershell-to-remove-an-item-from-an-array/
https://www.jonathanmedd.net/2014/01/adding-and-removing-items-from-a-powershell-array.html
https://mjolinor.wordpress.com/2014/01/20/arrays-and-generic-collections-in-powershell/

нет, ну вы видели, вы видели, а ??
не ну пиздец же.
$colors = $null
$colors = $colors | where {$_ -ne "yellow"}
https://4sysops.com/archives/arrays-in-powershell-create-change-read-sort-delete/
нет, ну вы блять видели ??

UPD
$a = @(1,2,3,4)
$a
$a[2] = $null
$a
$a[2]
Это вообще как?
scif_yar: (Default)
Я вам ленту-то засру!
Общем, у телеги есть два вида чатов - частный и публичный.
upgraded the group to a supergroup
Read more... )
scif_yar: (Default)
Ненавижу блядь неявное приведение типов.
Ебусь с кодом. ОДНА И ТА ЖЕ блядь переменная в объекте то сцука int32, то str.
Не, я понимаю что я сейчас все блядь гвоздями приколочу, но что-то выбесило.
Причем, блядь, все это из файла читается, ну вот ..
А БЛЯДЬ в файле то все чОтко -
<S N - и это string и <I32 N - а это, блядь, integer. Система работает как ей скажут. БЛЯДЬ. Конечно я сам дурак, но уже второй раз в это влетаю. Надо приколачивать гвоздями. Правда, приколачивать надо тоже с умом - ([string]($t1.id)) - это вовсе не [string]($t1.id) и не [string]$t1.id Это три разных значения, МВУ ХОХОХОХО. Очень полезные грабли я считаю. И еще после этого вопрос, почему я не люблю всякие там однострочники с много много скобок. Да вот поэтому. UPD Кто пишет сначала function myfun{} и потом ПОСЛЕ {} начинает писать код = - тот Я. Я главное смотрю, а чего оно на breakpoint не попадает. А оно вон что. СТЫДОБА!
scif_yar: (Default)
Пометки для себя на потом.
телеграм и боты.

Read more... )
scif_yar: (Default)
Пош он чем хорош (ну или плох) - ему сравнить теплое и мягкое как географу(ТМ) чужой ноут освоить, или Кошкину это все одобрить.

Ну да ладно.
Надо мне было по ходу дела проверять, есть у меня файл или нет. Окей, Test-Path и поехали
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/test-path?view=powershell-6

Ну и дальше
if ($tmp = "True") и поехали.
Поскольку изначально при запуске у меня файлов не было, то и ладно. Работало.
В какой-то момент при отладке полезло что-то не то. Пересоздается и все тут (ПРИЧЕМ РАБОТАЛО ЖИ)
Полез смотреть.
Угу, Boolean. И не "True", а –eq $TRUE or –eq $FALSE
http://www.systemcentercentral.com/powershell-tip-working-with-true-and-false-comparisons-in-powershell/

ну поправил везде по тексту .. вроде.

БЛИН. Сел писать простого бота для телеграмма. На повершелле.
Угу. Уже 500 строк. БЛЯТЬ БЛЯТЬ.
(Примечание. Для одного чата и для себя я написал за пару часов. Когда у меня в общем-то команд не много и чат_ид не динамический. Ну как пару часов - пока чаю налил, пока ISE открыл. А тут что-то началось
scif_yar: (Default)
Я же тут немного говнокодил.
На выходе -
powershell ise ctrl x not working
https://superuser.com/questions/1219035/ctrlx-keyboard-shortcut-not-working-on-windows-10

Оказалось, пиждарасами выступил свежий хром, который работал в фоне.
scif_yar: (Default)
Во первых, мне какого-то хера скрипт возвращает закешированный ответ из телеги. ID сообщения завис на NNN и висит. СЦУКА.
В любом браузере то же самое -
"https://api.telegram.org/bot" + $mytoken + "/getUpdates" - завис.
последний ответ NNN и все. И не але.

UPD. Ну потому что надо доки читать, а не копипастить скрипт бездумно.
Короче я сам рукожоп, потому что во первых
update_id обрабатывается, а не message_id
а во вторых он по другому и считается и формируется.

offset Integer Optional Identifier of the first update to be returned. Must be greater by one than the highest among the identifiers of previously received updates. By default, updates starting with the earliest unconfirmed update are returned. An update is considered confirmed as soon as getUpdates is called with an offset higher than its update_id. The negative offset can be specified to retrieve updates starting from -offset update from the end of the updates queue. All previous updates will forgotten.

ну я и воткнулся:
Опрос всегда выдаёт один и тот же результат

Метод getUpdates выдаёт 100 последних неподтверждённых обновлений. Чтобы подтвердить обновление, используйте параметр offset при вызове getUpdates вот так:

offset = update_id последнего обработанного обновления + 1

Все обновления с update_id меньшим или равным offset будут отмечены как подтверждённые и не будут больше возвращаться сервером.
https://tlgrm.ru/docs/bots/faq

UPDATE ID !! не message !!

Все было видно в отладке через https:// бла бла в браузере.


Во вторых ПИДАРЫ
The `r (carriage return) is ignored in PowerShell (ISE)
https://ss64.com/ps/syntax-esc.html
https://social.technet.microsoft.com/Forums/office/en-US/7f178d9b-e437-4a1c-9e6a-6681a1fb88fe/carriage-returnquotrquot-in-writehost-not-working?forum=ITCG

ДА БЛЯТЬ ПОЧЕМУ ???
При этом `r`n работает.
Да блять!
scif_yar: (Default)
Ради интереса запилил на повершелле бота для телеги (ну конечно в методичку подсматривал).
Основная проблема (сейчас), конечно, это не сам бот, пилил я его .. ну с 10 до 2 ночи наверное, и до того утром (за пару дней до) вспоминал, как оно работает-то вообще.
Проблема в том, что надо ли его вешать как сервис, и если да, то как его при этом правильно прикручивать в систему-то ?
Сейчас сделано методом спичек и желудей -
- в таск шедулер привязан скрипт, выполняемый раз в 5 минут (чаще нельзя), в котором сам бот (скрипт) вызывается каждые 5 секунд (через sleep 5), ну и дальше уже сам бот (скрипт) ходит на веб.
Наверное можно иначе.

UPD
Вторая Главная Проблема - гомосексуалисты в одной организации. Опять API отрезали, прямо хоть VPN покупай.

UPD.
Не отрезали. Это я рукожоп - https://scif-yar.dreamwidth.org/333231.html
scif_yar: (Default)
$a = @("123")*10
а это вообще законно?

UPD
$a = 0..10 | % {'asdf'}
$a = 88..78 | % {'asdf'+$_}

Measure-Command {$a = @("123")*100} | select ticks
Measure-Command {$a = @("123")*10000} | select TotalSeconds
scif_yar: (Default)
МОжно делать так
Get-VM | where {(Get-TagAssignment -Entity $_ | Select -ExpandProperty Tag) -like 'MYTAG001'}
а можно так
get-vm -Tag 'MYTAG001'

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

upd
https://www.reddit.com/r/PowerShell/comments/4gtqp5/getvm_gettagassignment/
scif_yar: (Default)
# Я тут полез в пош, не то чтобы глубже, но как-то типа "еще раз с ноля".
# До этого у меня вопросов особых не было, ну типа командлет, ну вот что-то отдает, ну вот есть | get-member, и дальше уже ты там $mailbox.name как-то крутишь, а тут вот пришлось.

# Во первых, что читать
Read more... )

Profile

scif_yar: (Default)
scif_yar

November 2025

S M T W T F S
      1
2345678
9101112131415
16 171819 202122
23242526272829
30      

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 13th, 2025 10:10 pm
Powered by Dreamwidth Studios