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

Опубликовал mozz mozz (mozz) в раздел Администрирование - Системное

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

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

Если кому понравится можете поблагодарить Яндекс.Деньгами на счет 41001634129126.

UPD 25.03.2011:

1) Добавил вывод информации о IP и Hostname клиента в терминальной сессии (showipv2.vbs)

Скачать файлы

Наименование Файл Версия Размер
showipv2.vbs
.vbs 1,94Kb
28.03.11
144
.vbs 1,94Kb 144 Скачать
showip.vbs
.vbs 1,07Kb
25.03.11
36
.vbs 1,07Kb 36 Скачать

См. также

Добавить вознаграждение
Комментарии
1. Сергей Ожерельев (Поручик) 3474 17.03.11 20:33 Сейчас в теме
Только что самому потребовалось, собрался ваять, а тут готовое.
2. mozz mozz (mozz) 144 18.03.11 09:00 Сейчас в теме
Тоже давно собирался, наконец таки руки дошли.
3. bulpi bulpi (bulpi) 103 24.03.11 15:11 Сейчас в теме
Чем поможет пользователю мелькнувшее черное окно? Или ему надо объяснять : набери cmd, потом имя скрипта ... Неудобно. Но все равно плюс за просвещение меня в области бейсика :)
4. mozz mozz (mozz) 144 24.03.11 15:33 Сейчас в теме
Так двойной щелчек мышкой по файлу выведет то окошко, которое у меня в иллюстрациях выложено, так что cmd пользователю набирать не надо.
5. Семен Семенов (totalcommand) 26.03.11 05:53 Сейчас в теме
строчку
Set Shell = CreateObject("WScript.Shell")
целесообразно вынести за пределы блока шалости
6. mozz mozz (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) 41 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 Ответить 2
9. mozz mozz (mozz) 144 30.03.11 16:09 Сейчас в теме
(8) Да собственно я и не говорю что это что-то особенное. Просто инструмент для админа, которому надоело каждый раз объяснять юзеру как через Пуск->выполнить->cmd и т.д. узнать свой ИП (чтобы подключиться к ниму radmin`ом или чем-нибудь из той же серии).
Согласитесь - проще объяснить что нужно зайти на подключенный logon скриптом сетевой диск (например U:\) и дважды щелкнуть на скрипте.
А то что это можно реализовать и в 1С почему бы и нет - только вот надо ли?
10. Ийон Тихий (cool.vlad4) 41 30.03.11 16:13 Сейчас в теме
(9) В принципе да...но только зачем юзверю знать ip...чем меньше знает, тем лучше спит...пусть лучше офис изучают...и 1с, конечно...
11. mozz mozz (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) 41 30.03.11 16:37 Сейчас в теме
(11) Теперь смысл понятен...только я бы сделал утилиту, которая отсылает отчет администратору, по действию пользователя, т.е. в принципе тоже самое...через чат например можно...например через, если не отрублен , net send ... через AD - все и так в принципе понятно ...
13. sound sound (sound) 518 31.03.11 10:02 Сейчас в теме
Для терминалки можете (не сочтите за рекламу) за идею взять вот эту хрень.
14. Аркадий Кучер (Abadonna) 3653 02.04.11 01:02 Сейчас в теме
(11)
Звонит Мария Ивановна говорит что у нее 1С выдала непонятное окошко и она не знает как его описать - лезем в список

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

If Unavailable(компутер) then чтото типа вот этого
20. sound sound (sound) 518 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. Aleksey Zhuchkov (MrWonder) 100 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 mozz (mozz) 144 19.02.13 14:08 Сейчас в теме
(21) MrWonder, вспоминается анекдот:

- Что-то не нравится мне наш вождь...
- Не нравится - не ешь.
23. Максим Литвинов (maksa2005) 86 23.11.15 11:45 Сейчас в теме
(8) cool.vlad4,
-----------------------------------
Win32_NetworkAdapterConfiguration
-----------------------------------
IPAddress: 192.168.1.200
IPAddress: fe80::7879:846:ab7:d429
Получает IPAddress сервера, а не клиента.
25. Сергей Смирнов (Serginio) 511 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());
КонецЦикла
...Показать Скрыть