INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Денисов Александр | Аналитик производительности БД | ГК Софтпоинт

«Неочевидные проблемы производительности: важность системного подхода при анализе»

• Распределенные взаимоблокировки: в чем опасность, как диагностировать и что делать дальше? «Распределенные блокировки», «синхронизация транзакций», «распределенные системы» — обычно это словосочетания, характерные для крупных систем, где сотни пользователей подключаются к геораспределенным репликам, а аналитики ищут вдохновения в измерениях олап-кубов. В секторе Small &Medium Business другие проблемы. Но даже если у вас все пользователи работают с одной-единственной клиент-серверной базой, вы все равно можете столкнуться с распределенными взаимоблокировками. Хуже того, из-за сложности диагностики программисты и администраторы могут не видеть, насколько серьезна ситуация. Мы разберем механику возникновения таких взаимоблокировок, способы диагностики и исправления ситуации. • «Железом» не прикрыть неоптимальный код. Когда аппаратное расширение уже не помогает. «Железом» не прикрыть неоптимальный код. Когда аппаратное расширение уже не помогает. Многие организации считают, что в случае острой необходимости они всегда могут «откупиться» от плохого кода вложившись в более мощную «железку» — дорого, зато быстро. Но из любого правила есть исключения. Мы разберем ситуацию, когда еще до закупки нового оборудования стало понятно, что это никак не ускорит систему.

0. mozz 144 17.03.11 20:33 Сейчас в теме

VBS скрипт показывающий IP и Hostname компьютера

Скрипт позволяющий админу узнать IP и Hostname не сильно разбирающегося в компах пользователя.

Перейти к публикации

Комментарии
Сортировка: Древо
1. Поручик 4112 17.03.11 20:33 Сейчас в теме
Только что самому потребовалось, собрался ваять, а тут готовое.
2. mozz 144 18.03.11 09:00 Сейчас в теме
Тоже давно собирался, наконец таки руки дошли.
3. bulpi 131 24.03.11 15:11 Сейчас в теме
Чем поможет пользователю мелькнувшее черное окно? Или ему надо объяснять : набери cmd, потом имя скрипта ... Неудобно. Но все равно плюс за просвещение меня в области бейсика :)
4. mozz 144 24.03.11 15:33 Сейчас в теме
Так двойной щелчек мышкой по файлу выведет то окошко, которое у меня в иллюстрациях выложено, так что cmd пользователю набирать не надо.
5. totalcommand 26.03.11 05:53 Сейчас в теме
строчку
Set Shell = CreateObject("WScript.Shell")
целесообразно вынести за пределы блока шалости
6. mozz 144 28.03.11 09:25 Сейчас в теме
(5) Упс :D не заметил... Спасибо за подсказку, исправил.
7. mctsimco 30.03.11 12:53 Сейчас в теме
Еще парочка аналогичных вещей для 7.7:

//*******************************************
Функция глИмяДомейнЮзера() Экспорт
ТекстСкрипта = "function GenUsername()
|Dim objNet
|On Error Resume Next
|Set objNet = CreateObject(""WScript.NetWork"")
|If Err.Number <> 0 Then
|GenUsername = 0
|return
|End if
|res = trim(objNet.UserDomain) & chr(92) & objNet.UserName
|on error goto 0
|Set objNet = Nothing
|GenUsername = res
|end function" + Симв(13)+ Симв(10);

Попытка
ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
ScrptCtrl.Language="vbscript";
ScrptCtrl.AddCode(ТекстСкрипта);
ДомейнЮзер = СокрЛП(ScrptCtrl.Run("GenUsername"));
Возврат ДомейнЮзер;
Исключение
Сообщить("Ошибка оскрипта");
Сообщить(ОписаниеОшибки());
Возврат "";
КонецПопытки;
КонецФункции

//*******************************************
Функция глПроксиСервер() Экспорт
ТекстСкрипта = "function get_proxy()
|Dim WshShell_reg
|Set WshShell_reg = CreateObject(""WScript.Shell"")
|get_proxy = trim(WshShell_reg.RegRead(""HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersio­n\Internet Settings\ProxyServer""))
|set WshShell_reg = Nothing
|end function" + Симв(10) + Симв(13);

Попытка
ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
ScrptCtrl.Language="vbscript";
ScrptCtrl.AddCode(ТекстСкрипта);
Результат = СокрЛП(ScrptCtrl.Run("get_proxy"));
Возврат Результат;
Исключение
Сообщить("глПроксиСервер: Ошибка получения данных из реестра");
Сообщить(ОписаниеОшибки());
Возврат "";
КонецПопытки;
КонецФункции
8. cool.vlad4 43 30.03.11 13:15 Сейчас в теме
С помощью WMI Code Creator (и респект Душелову за WMI Code Creator 1С) ушло меньше минуты

strComputer = ".";
objWMIService = ПолучитьCOMОбъект("winmgmts:\\" + strComputer + "\root\CIMV2");
colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE",,48);
Для Каждого objItem Из colItems Цикл
Сообщить("----------------------------------- ");
Сообщить("Win32_NetworkAdapterConfiguration");
Сообщить("----------------------------------- ");
Для Каждого Стр Из objItem.IPAddress Цикл
Сообщить("IPAddress: " + Стр);
КонецЦикла;
КонецЦикла;
Так, что это так...ничего особенного...
skom; Allbors; +2 Ответить
9. mozz 144 30.03.11 16:09 Сейчас в теме
(8) Да собственно я и не говорю что это что-то особенное. Просто инструмент для админа, которому надоело каждый раз объяснять юзеру как через Пуск->выполнить->cmd и т.д. узнать свой ИП (чтобы подключиться к ниму radmin`ом или чем-нибудь из той же серии).
Согласитесь - проще объяснить что нужно зайти на подключенный logon скриптом сетевой диск (например U:\) и дважды щелкнуть на скрипте.
А то что это можно реализовать и в 1С почему бы и нет - только вот надо ли?
10. cool.vlad4 43 30.03.11 16:13 Сейчас в теме
(9) В принципе да...но только зачем юзверю знать ip...чем меньше знает, тем лучше спит...пусть лучше офис изучают...и 1с, конечно...
11. mozz 144 30.03.11 16:27 Сейчас в теме
(10) Тогда нужно чтобы у всех были статические IP (т.к. DHCP может выдать другой ИП) и список типа:
Мария Ивановна 192.168.8.231
Михаил Степанович 192.168.8.215
Николай Петрович 192.168.8.88
и т.д.
Звонит Мария Ивановна говорит что у нее 1С выдала непонятное окошко и она не знает как его описать - лезем в список, ищем Марию Ивановну, подрубаемся к ней и смотрим на окошко.
12. cool.vlad4 43 30.03.11 16:37 Сейчас в теме
(11) Теперь смысл понятен...только я бы сделал утилиту, которая отсылает отчет администратору, по действию пользователя, т.е. в принципе тоже самое...через чат например можно...например через, если не отрублен , net send ... через AD - все и так в принципе понятно ...
14. Abadonna 3717 02.04.11 01:02 Сейчас в теме
(11)
Звонит Мария Ивановна говорит что у нее 1С выдала непонятное окошко и она не знает как его описать - лезем в список

Звонит Мария Ивановна, бац правой кнопкой на на корпоративном чате на её имени, там, помимо прочего, открыть "Комп-блабла". Вот так у реальных пацанов ;)
"Вы еще кипятите? Тогда мы идем к Вам!" :D
Сервис М
23. maksa2005 145 23.11.15 11:45 Сейчас в теме
(8) cool.vlad4,
-----------------------------------
Win32_NetworkAdapterConfiguration
-----------------------------------
IPAddress: 192.168.1.200
IPAddress: fe80::7879:846:ab7:d429
Получает IPAddress сервера, а не клиента.
13. sound 526 31.03.11 10:02 Сейчас в теме
Для терминалки можете (не сочтите за рекламу) за идею взять вот эту хрень.
15. sound 526 02.04.11 09:14 Сейчас в теме
Можно пойти дальше: Звонит Мария Ивановна, и тут "оно само" бац и сразу весь расклад: распознало кто это звонит, с какого номера, ну а всякие там IP-шники это уж вообще становится ни к чему, и сразу список действий типа:
1) Ответить
2) Ответить c видео :D
3) Связать с главным бухгалтером
.....
Действие по умолчанию:
N) Послать В ... (и тут список 2-го уровня :D )
Гибкая система настроек, без внешних компонент, не гербалайф :D
16. sound 526 02.04.11 10:37 Сейчас в теме
Кстати, как-то приходилось скрещивать 1С с Asterisk (http://www.buligin.com/ejauja.html), здесь тоже об этом уже не раз упоминалось, в принципе можно мутить достаточно интересные вещи типа звонить из 1С, определять кто тебе позвонил, получать кое-какую статистику и т.д. Не сказать конечно, что оно очень круто все, но кое-что из этой ВК выжать все таки можно, была бы фантазия и время...
17. mozz 144 04.04.11 11:48 Сейчас в теме
(16) Еще бы готовый работающий пример к ней а лучше исходники к этой dll ;) ...
18. sound 526 04.04.11 11:49 Сейчас в теме
(17) Согласен, но похоже проект мертвый, а жаль. А там разве нет примера?
19. --toxic-- 29.06.11 07:29 Сейчас в теме
А кто может подсказать, как средствами 1С проверить доступность ПК в сети?

If Unavailable(компутер) then чтото типа вот этого
20. sound 526 29.06.11 08:31 Сейчас в теме
(19) Да лехко:

Вариант №1:

// Функция Avaible проверяет "пингуется" ли указанный IP
Function Avaible(IP) Export
	Try
		ServicesSet = GetCOMObject("winmgmts:{impersonationLevel=impersonate}");
		Items = ServicesSet.ExecQuery("SELECT StatusCode from Win32_PingStatus WHERE address = '" + IP + "' AND Timeout=3");
	Except
		Return Undefined;
	EndTry;
	For Each Item In Items Do
		If Item.StatusCode = 0 Then
			Return True;
		Else
			Return False;
		EndIf;
	EndDo;
EndFunction // Avaible()
Показать


Вариант №2:

Function Avaible_2(IP) Export
	scrptCtrl = New COMObject("MSScriptControl.ScriptControl");
	scrptCtrl.language = "vbscript";
	scrptCtrl.addcode("
	|Function Avaible()
	|Set objWMIService = GetObject(""winmgmts:{impersonationLevel=impersonate}"")
	|Set objPing = objWMIService.ExecQuery(""select * from Win32_PingStatus where address = '" + IP + "'"")
	|For Each objStatus in objPing
	|If IsNull(objStatus.StatusCode) Or objStatus.StatusCode <> 0 Then
	|   Avaible = 0
	|Else
	|   Avaible = 1
	|End If
	|Next
	|End function
	|");
	Return ScrptCtrl.Run("Avaible");
EndFunction // Avaible_2()

Показать


Пилили уже эту тему тут, кстати поиском тоже ищется:
http://infostart.ru/gsearch/?cx=013045212460068984860%3Azhih0apwy_a&cof=FORID%3A9&ie=wind­ows-1251&q=ping&sa=%CD%E0%E9%F2%E8
Somebody1; +1 Ответить
21. MrWonder 163 11.09.12 11:46 Сейчас в теме
Пипец, скоро echo %COMPUTERNAME% && pause как решение будут выкладывать
Вы бы тогда дополнили Ваше "решение c плюсиком автору" отображением информации только по активному интерфейсу,
зачем инфтерфейсы без линка отражать? Благодарности не надо

Set objService = GetObject("winmgmts:\\.\root\CIMV2")

Set Interfaces = objService.ExecQuery("SELECT * FROM Win32_NetworkAdapter where NetConnectionStatus=2")
For Each Interface In Interfaces
Set IPs = objService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration where caption='"&Interface.caption&"'")
For Each ip In IPs
strIPAddress = Join(ip.IPAddress, ",")
MsgBox strIPAddress
Next
Next
22. mozz 144 19.02.13 14:08 Сейчас в теме
(21) MrWonder, вспоминается анекдот:

- Что-то не нравится мне наш вождь...
- Не нравится - не ешь.
25. Serginio 711 04.12.16 16:06 Сейчас в теме
Используя Использование сборок .NET в 1С 7.x b 8.x. Создание внешних Компонент

Использование классов .Net в 1С для новичков

DNS=Врап.ПолучитьТипИзСборки("System.Net.Dns","System.dll");
// Получение имени компьютера.
host = Dns.GetHostName();
// Получение ip-адреса.
 ip =Dns.GetHostByName(host).AddressList.get_Item(0);

Сообщить(ip.ToString());
//или
 Адреса=Dns.GetHostByName(host).AddressList:

 Для каждого адрес из Адреса Цикл
Сообщить(адрес .ToString());
КонецЦикла
Показать
26. merlin1975 2 10.01.18 11:43 Сейчас в теме
Здравия!
Так для 7.7 что-нибудь для определения IP клиента терминального подключения есть?
Попробовал многое, но получается IP только самого сервера а не клиента.
Прошу помощи.
Благодарю.
27. mozz 144 11.01.18 08:05 Сейчас в теме
(26) смотрите (7) ответ, в качестве скрипта - передавайте мой скрипт и будет Вам счастье.
28. merlin1975 2 11.01.18 08:25 Сейчас в теме
И он покажет именно клиентский IP в терминале?
29. mozz 144 11.01.18 12:01 Сейчас в теме
30. merlin1975 2 11.01.18 14:14 Сейчас в теме
"Строка: 40, Символ: 2, Ошибка: Компьютер удаленного сервера не существует или недоступен 'GetObject'"..
Как-то так...
31. merlin1975 2 11.01.18 14:54 Сейчас в теме
Попробовал с другого компа - отработал!
Теперь буду разбираться с 1С 7.7
PS Так и не понял, как это вставить в 1С 7.7.
Если можно пришлите код для !c 7.7. Просто не понимаю, что из скрипта куда правильно вставить.
Благодарю.
32. mozz 144 11.01.18 15:48 Сейчас в теме
(31) что-то типа:

WshShell = СоздатьОбъект("WScript.Shell");
Запуск = "%comspec% /c "+ИмяФайлаНаДиске+".vbs";
WshShell.Exec(Запуск);
33. merlin1975 2 11.01.18 16:11 Сейчас в теме
(32)
Хм-м... Так это как запуск стороннего приложения. А надо получить переменную с IP клиента.
У меня все (пытаюсь по-аналогии с 7 постом) пишет ошибка скрипта... Хотя Имя пользователя и компа получает правильно...
34. merlin1975 2 12.01.18 22:01 Сейчас в теме
Ещё одно но: на сервере терминалов под учеткой с правами "Пользователи удаленного рабочего стола" скрипт не отрабатывает - "Разрешение отклонено GetObject 800А0046". Попробовал через SWbemLocator - "Отказано в доступе 80070005"...
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии


Программист 1С
Москва
зарплата от 100 000 руб. до 200 000 руб.
Полный день

Преподаватель 1С
Санкт-Петербург
Полный день

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству

Удаленный бизнес-аналитик 1С
Санкт-Петербург
Временный (на проект)