Вход | Регистрация
    1  2   
1С:Предприятие :: 1С:Предприятие 8 общая

Сменить кодировку ответа команды ping

Сменить кодировку ответа команды ping
Я
   Mikhail Volkov
 
14.11.20 - 15:14
Есть у меня такаю функция:
// Возвращает Истина, если пингуется IP-адрес
// v8: Как средствами 1C проверить ping (Ping monitor)?
Функция PingIP_Адреса(IP_Адрес = "", ТекстСообщения = "") Экспорт
    Если ПустаяСтрока(IP_Адрес) Тогда
        Возврат Ложь;
    ИначеЕсли IP_Адрес = НРег(СокрЛП(ИмяКомпьютера())) Тогда
        Возврат Истина;
    КонецЕсли;
    objShell = Новый COMОбъект("WScript.Shell");
    objScriptExec = objShell.Exec("ping.exe -n 1 " + IP_Адрес);
    strPingResults = НРег(objScriptExec.StdOut.ReadAll());
    Результат = Найти(strPingResults, "ttl=") > 0;
    ТекстСообщения = ?(Результат, ТекстСообщения, ?(СтрЧислоВхождений(IP_Адрес, ".") >= 3, "IP-адрес", "Компьютер") + ": '" + ВРег(IP_Адрес) + "' - недоступен!");
    IP_Адрес = ?(СтрЧислоВхождений(IP_Адрес, ".") >= 3, IP_Адрес, ?(Найти(strPingResults, "[") = 0, "", Сред(strPingResults, Найти(strPingResults, "[") + 1, Найти(strPingResults, "]") - Найти(strPingResults, "[") - 1)));
    Возврат Результат;
КонецФункции // PingIP_Адреса()

На входе ИмяКомпьютера, если компьютер доступен в сети (подключился не удаленно), возвращает Истина, преобразует ИмяКомпьютера в его IP_Адрес. Много лет работала, а сегодня strPingResults выдает: џаё їа®ўґаєґ бўп§ё ­ґ г¤ «®бм ®ў­ аг¦ёвм 㧴« mv-win10.
џа®ўґамвґ ё¬п 㧫  ё ї®ўв®аёвґ ї®їлвєг. - даже цифр нет!?
   МихаилМ
 
1 - 14.11.20 - 15:29
   Mikhail Volkov
 
2 - 14.11.20 - 15:37
(1) Куда вставить это: chcp 1251? Нашел тему v8: как сменить кодировку записи ping`а в лог-файл ?, но не понял куда он вставил: objScriptExec = objShell.Exec("C:\WINDOWS\system32\chcp.com 1251");
   ДенисЧ
 
3 - 14.11.20 - 15:45
(2) батник из двух строк сделай, его и запускай
   shuhard
 
4 - 14.11.20 - 16:01
(3) +100500
   Mikhail Volkov
 
5 - 14.11.20 - 16:07
(3) Зачем мне чтоб батник работал, 1С нужно.
   Aleksey
 
6 - 14.11.20 - 16:14
(5) Ну так напиши на 1С код который создать бантик его запустит и удалит за собой
   acht
 
7 - 14.11.20 - 16:43
(0) џаё їа®ўґаєґ бўп§ё ­ґ г¤ «®бм ®ў­ аг¦ёвм 㧴« mv-win10. џа®ўґамвґ ё¬п 㧫  ё ї®ўв®аёвґ ї®їлвєг
Русским языком же написано - "При проверке связи не удалось обнаружить узел mv-win10. Проверьте имя узла и повторите попытку"

А функция твоя убогая как раз и поломалась на недоступности. Какой у недоступного компьютера (по результатам проверки вхождения фрагмента "ttl=") адрес ip может быть?
   Djelf
 
8 - 14.11.20 - 16:56
(2) Как куда? Туда и вставь: "chcp 1251 & ping 127.0.0.1"
   Mikhail Volkov
 
9 - 14.11.20 - 17:22
(7) >Русским языком же написано - "При проверке связи не удалось обнаружить узел mv-win10. Проверьте имя узла и повторите попытку"
Как ты это прочитал!? Компьютер mv-win10 действительно удаленный, а вот для внутреннего perseus (в сети) strPingResults пишет: ћў¬ґ­ ї єґв ¬ё б perseus.corp.akit [10.0.13.129] б 32 ў ©в ¬ё ¤ ­­ле:
ћвўґв ®в 10.0.13.129: зёб«® ў ©в=32 ўаґ¬п<1¬б ttl=128

‘в вёбвёє  ping ¤«п 10.0.13.129:
    џ єґв®ў: ®вїа ў«ґ­® = 1, ї®«гзґ­® = 1, ї®вґап­® = 0
    (0% ї®вґам)
џаёў«ё§ёвґ«м­®ґ ўаґ¬п їаёґ¬ -їґаґ¤ зё ў ¬б:
    њё­ё¬ «м­®ґ = 0¬бґє, њ єбё¬ «м­®ґ = 0 ¬бґє, ‘ത­ґґ = 0 ¬бґє
IP-адрес его определил по квадратным скобочкам. Чем заменить "ttl=" в данном случае?
   acht
 
10 - 14.11.20 - 17:37
(9)
Обмен пакетами с perseus.corp.akit [10.0.13.129] с 32 байтами данных:
Ответ от 10.0.13.129: число байт=32 время<1мс ttl=128

Статистика Ping для 10.0.13.129:
    Пакетов: отправлено = 1, получено = 1, потеряно = 0
    (0% потерь)
Приблизительное время приема-передачи в мс:
    Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

Как распарсить текст, сам разбирайся
   acht
 
11 - 14.11.20 - 17:39
А потом на какой-нибудь машине ты еще и настроенный IPv6 обнаружишь =)
   Mikhail Volkov
 
12 - 14.11.20 - 17:49
(10) Фрагмент "ttl=" остался нетронутым...
(11) Как переписать мою функция? А то тему v8: Как средствами 1C проверить ping (Ping monitor)? не могу открыть.
   CepeLLlka
 
13 - 14.11.20 - 18:53
Вот недавно делал.. работает на win7, на win10 не пробовал..
&НаКлиенте
Процедура ПроверитьСвязьДоСервера(КолВоПакетов = 1)
    
    Пинг("192.168.1.100", КолВоПакетов);
    
КонецПроцедуры


&НаКлиенте
Процедура Пинг(IPАдрес, КолВоПакетов = 1)
    ИмяВремФайла = ПолучитьИмяВременногоФайла("txt");
        objShell = Новый COMОбъект("WScript.Shell");
    objShell.Run("cmd /c ping.exe -n "+ КолВоПакетов + " " + IPАдрес + " >"+ИмяВремФайла, 0,Истина);
    ТекстДок = Новый ТекстовыйДокумент;
    ДопПараметры = Новый Структура;
    ДопПараметры.Вставить("ТекстДок", ТекстДок);
    ТекстДок.НачатьЧтение(Новый ОписаниеОповещения("ЧтениеВремФайлаПингЗавершение", ЭтотОбъект, ДопПараметры),ИмяВремФайла,КодировкаТекста.OEM);
КонецПроцедуры

&НаКлиенте
Процедура ЧтениеВремФайлаПингЗавершение(ДополнительныеПараметры) Экспорт 
    ПингРезультат = ДополнительныеПараметры.ТекстДок.ПолучитьТекст();
    Если Найти(ВРег(ПингРезультат), "TTL=") > 0 Тогда
        ЕстьСвязьДоСервера = Истина;
        Сообщить("Связь успешно установлена");
    Иначе
        ЕстьСвязьДоСервера = Ложь;
    КонецЕсли;
    ПослеИзмененияСостоянияVPN();
КонецПроцедуры
   mistеr
 
14 - 14.11.20 - 19:24
(0) Пинг еще много разных ошибок может выдавать. Если уж парсить вывод, то на английском. Для этого нужно сделать chcp 65001.
   Mikhail Volkov
 
15 - 14.11.20 - 20:11
(8) В строчку: objScriptExec = objShell.Exec("ping.exe -n 1 " + IP_Адрес);? В итоге будет: objScriptExec = objShell.Exec("chcp 1251 & ping.exe -n 1 " + IP_Адрес);?
   Mikhail Volkov
 
16 - 15.11.20 - 07:03
(13) Через временный файл... , тоже по анализу наличия фрагмента "ttl=". У меня в момент ее выполнения на мгновение выскакивает черное окно, нежелательно. А в твоем варианте выскакивает?
(14) > Для этого нужно сделать chcp 65001.
Как сделать, покажи куда конкретно вставить chcp 65001?
   Mikhail Volkov
 
17 - 15.11.20 - 07:28
(14) Так (15): Ошибка при вызове метода контекста (Exec)
    objScriptExec = objShell.Exec("chcp 65001 & ping.exe -n 1 " + IP_Адрес);
по причине:
Произошла исключительная ситуация (WshShell.Exec): Не удается найти указанный файл.
   trdm
 
18 - 15.11.20 - 08:49
(17) Exec - процесс запускает. По коммандной строке. Просто файл запуска процесса не может найти.
   spectre1978
 
19 - 15.11.20 - 08:50
Пинг вроде как через wmi можно еще делать, без использования команд ОС.
   Mikhail Volkov
 
20 - 15.11.20 - 09:01
(18) Пробовал варианты (закомментированы):
    objShell = Новый COMОбъект("WScript.Shell");
//    objScriptExec = objShell.Exec("C:\WINDOWS\system32\chcp.com 65001");

//    objScriptExec = objShell.Exec("ping.exe -n 1 " + IP_Адрес + " C:\WINDOWS\system32\chcp.com 1251");
    objScriptExec = objShell.Exec("ping.exe -n 1 " + IP_Адрес);
    strPingResults = НРег(objScriptExec.StdOut.ReadAll());
Ошибок вроде нет, но абракадабра осталась...
   spectre1978
 
21 - 15.11.20 - 09:08
Еще раз говорю - через wmi сделайте. v8: Как средствами 1C проверить ping (Ping monitor)?
   Mikhail Volkov
 
22 - 15.11.20 - 10:13
(21) Функцию оттуда и взял, еще дописал преобразование имени компьютера в его IP_Адрес. Она рабочая, просто абракадабру хочется убрать.
   Biker
 
23 - 15.11.20 - 10:29
(22) Посмотри в БСП ПроверитьДоступностьСервера(АдресСервера)
   Mikhail Volkov
 
24 - 15.11.20 - 10:56
(23) Мне не только Доступность компьютера нужна, еще преобразование имени компьютера в его IP_Адрес. Функция рабочая, просто абракадабру хочется убрать.
   Djelf
 
25 - 15.11.20 - 11:06
(17) Вот так попробуй
      WshShell = Новый COMОбъект("WScript.Shell");
      WshExec = WshShell.Exec("cmd.exe /q /k echo off");
      WshExec.StdIn.WriteLine("chcp 1252>nul");
      WshExec.StdIn.WriteLine("ping.exe -n 1 127.0.0.1");
      WshExec.StdIn.WriteLine("exit");
    Сообщить(WshExec.StdOut.ReadAll());

   Mikhail Volkov
 
26 - 15.11.20 - 12:35
(25) Спс! Для доступного компьютера (в сети) пишет:
pinging perseus.corp.akit [10.0.13.129] with 32 bytes of data:
reply from 10.0.13.129: bytes=32 time<1ms ttl=128

ping statistics for 10.0.13.129:
    packets: sent = 1, received = 1, lost = 0 (0% loss),
approximate round trip times in milli-seconds:
    minimum = 0ms, maximum = 0ms, average = 0ms
("ttl=" - есть, кв. скобки тоже) Для недоступного: Ping request could not find host MV-WIN10. Please check the name and try again.
   Mikhail Volkov
 
27 - 15.11.20 - 14:06
В момент ее выполнения на мгновение выскакивает черное окно, нежелательно. Есть возможность убрать?
   Mikhail Volkov
 
28 - 16.11.20 - 07:59
(23) ПроверитьДоступностьСервера(АдресСервера) - нет в Авто-Альфа, а в УПП/КА1 тоже черное окно возникает. Мне еще нужно преобразование имени компьютера в его IP_Адрес. Есть в БСП?
   NorthWind
 
29 - 16.11.20 - 08:30
(28) никак вы не хотите услышать. Ладно, держите

    wmi=ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2");
    Успех=Ложь;
    oColPings=wmi.ExecQuery("Select * From Win32_PingStatus where Address = 'srv-02' and ResolveAddressNames = True");
    
    Адрес = "";
    ПингУспешен = Ложь;
    Для Каждого objStatus Из oColPings Цикл 
        Если objStatus.StatusCode = 0 Тогда
            Адрес = objStatus.ProtocolAddressResolved;
            ПингУспешен = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    Если ПингУспешен Тогда
        Сообщить (Адрес);
    Иначе
        Сообщить ("Машина недоступна");
    КонецЕсли;
   trdm
 
30 - 16.11.20 - 09:01
(24) лучшее враг хорошего. Забей. Определись, если абракадабра, то облом.
 
 Рекламное место пустует
   УдавВПопугаях
 
31 - 16.11.20 - 09:02
так делал

Shell = Новый ComОбъект("WScript.Shell");
Shell.Run(СтрокаПинга + СтрокаПодсети + "." + Н, 0, Истина) <> 0
   УдавВПопугаях
 
32 - 16.11.20 - 09:02
Сообщить("Адрес " + СтрокаПодсети + "." + Н + " недоступен");
   УдавВПопугаях
 
33 - 16.11.20 - 09:02
СтрокаПинга = "ping -n 1 -w 400 "
   УдавВПопугаях
 
34 - 16.11.20 - 09:05
кусками получилось

СтрокаПодсети = СтрЗаменить(Подсеть, " ", "");
    СтрокаПинга = "ping -n 1 -w 400 ";
    Shell = Новый ComОбъект("WScript.Shell");
    
    Для Н = От По До Цикл
        Если Shell.Run(СтрокаПинга + СтрокаПодсети + "." + Н, 0, Истина) <> 0 Тогда
            Сообщить("Адрес " + СтрокаПодсети + "." + Н + " недоступен");
            Продолжить;
        КонецЕсли;
   acht
 
35 - 16.11.20 - 09:35
(28) > Мне еще нужно
Запускай nslookup и разбирай ответ
   Mikhail Volkov
 
36 - 16.11.20 - 09:37
(29) Так черное окно возникает?
   УдавВПопугаях
 
37 - 16.11.20 - 09:40
(34) так не возникает
   NorthWind
 
38 - 16.11.20 - 10:27
(36) С окном проблемы возникают, когда вы пытаетесь стартовать порожденные процессы, которые могут открывать консольное окно.
WMI не требует запускать никаких дополнительных процессов в принципе, поэтому и не надо думать как спрятать окно. И разбирать вывод не надо, также как и не надо заморачиваться, что делать, если в какой-то винде он будет отформатирован по-другому.
   mistеr
 
39 - 16.11.20 - 11:52
(27) Можно убрать, если обернуть в VBS скрипт. То есть схема такая: через WScript.Shell запускаешь VBS скрипт, в нем запускаешь cmd и ставишь признак скрыть окно, в cmd запускаешь chcp + ping.
Вот так вот в винде все хитро устроено.

Либо пинговать через WMI (29).
   Mikhail Volkov
 
40 - 16.11.20 - 12:24
(39) > Либо пинговать через WMI (29).
Не понял, а где в (29) Имя компьютера (или его IP-адрес) указан?
   acht
 
41 - 16.11.20 - 12:34
(40) > Не понял, а где
В условии where wmi запроса.
   Mikhail Volkov
 
42 - 16.11.20 - 12:42
(41) Вместо srv-02? Писать: oColPings=wmi.ExecQuery("Select * From Win32_PingStatus where Address = '" + ИмяКомпьютера + "' and ResolveAddressNames = True");
   Mikhail Volkov
 
43 - 16.11.20 - 13:09
+ Да, так. Но Адрес не IP-адрес, а ИмяКомпьютера.Домен;!?
   spiller26
 
44 - 16.11.20 - 13:25
Почему вы через COM действуете? Есть же КомандаСистемы()

Сообщить(КомандаСистемы("%CMD% /q /c ping http://www.yandex.ru";));
   Mikhail Volkov
 
45 - 16.11.20 - 13:40
(44) Взял с v8: Как средствами 1C проверить ping (Ping monitor)?. А КомандаСистемы("%CMD% /q /c ping http://www.yandex.ru";;) дает черное окно? Через WMI черное окно не возникает, но IP-адреса не дает (не знаю как?).
   spectre1978
 
46 - 16.11.20 - 13:49
(44) затем, что пользоваться средствами ОС для этого все же разумнее, чем запускать отдельную программу. По крайней мере под виндой.
   spectre1978
 
47 - 16.11.20 - 13:56
И не надо мудохаться с разбором вывода программы, с тем, что там, в этом выводе, чего-то может поменяться, и с черными консольными окнами, которые любят всплывать при запуске процессов.
   Mikhail Volkov
 
48 - 16.11.20 - 14:10
(44) КомандаСистемы только запускает, ни чего не возвращает!?
   acht
 
49 - 16.11.20 - 14:41
(48) А ты точно Михаил Волков, а не Андрей Широносов?
   Mikhail Volkov
 
50 - 16.11.20 - 15:26
Куда делся NorthWind? Как из Адрес = objStatus.ProtocolAddressResolved; (29) получить IP-адрес?
   УдавВПопугаях
 
51 - 16.11.20 - 15:41
чем (34) не устраивает? три строки кода
   acht
 
52 - 16.11.20 - 15:52
(50) > Куда делся
Оборзели вы, батенька.
   УдавВПопугаях
 
53 - 16.11.20 - 15:54
ну есть у него немного, мало чего сам хочет делать, в основном спрашивает, при этом еще ковыряется в вариантах
   Mikhail Volkov
 
54 - 16.11.20 - 16:43
(51) Что такое СтрокаПодсети = СтрЗаменить(Подсеть, " ", ""); Подсеть - Имя компьютера?
Для Н = От По До Цикл - От и До что такое?
   acht
 
55 - 16.11.20 - 16:53
   УдавВПопугаях
 
56 - 16.11.20 - 17:16
(54) ну хз, ты программист или кто
какая разница что там, основное это СОМ и вызов его функции, сначала я и написал это "основное", потом добавил, потом даже все сразу выложил. ты же знаешь как выглядит пинг в смд, так же он и тут должен выглядеть, смысл не в ИП и подсети, а вызове shell.run( , , ). Один параметр это показывать страшное черное окно или нет, а другой - по-моему останавливаться по ошибке (это не точно) или нет.

Shell = Новый ComОбъект("WScript.Shell");
Если Shell.Run("192.168.0.1", 0, Истина) <> 0 Тогда

что тут сложного, тем более тоже самое написано в этой ветке в последнем посте вариант 2, причем мне интересно - почему люди всегда выбирают самый зае*истый вариант, а не самый короткий, прозрачный и простой
v8: Как средствами 1C проверить ping (Ping monitor)?
   УдавВПопугаях
 
57 - 16.11.20 - 17:19
-n 1 -w 400
количество пингов и кажется время ожидания отклика
как бы проверить то - ничего не стоит, правда? вставил в обработку и нажал кнопку, посмотрел что получилось, поменял значение параметра, опять попробовал
   УдавВПопугаях
 
58 - 16.11.20 - 17:42
нет, второй параметр это ожидание конца выполнения
http://scriptcoding.ru/2013/06/25/wscript-shell-run/
   УдавВПопугаях
 
59 - 16.11.20 - 17:43
вернее третий параметр, речь о двух последних, с первым все и так ясно
   NorthWind
 
60 - 16.11.20 - 18:23
(50) Включите уже мозг. Вам все разжевали и в рот положили


Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    wmi=ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2");
    Успех=Ложь;
    oColPings=wmi.ExecQuery("Select * From Win32_PingStatus where Address = 'google.com' and ResolveAddressNames = True");
    
    Адрес = "";
    ПингУспешен = Ложь;
    Для Каждого objStatus Из oColPings Цикл 
        Если objStatus.StatusCode = 0 Тогда
            Адрес = objStatus.ProtocolAddressResolved;
            ПингУспешен = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    Если ПингУспешен Тогда
        Сообщить (Адрес);
    Иначе
        Сообщить ("Машина недоступна");
    КонецЕсли;
    
КонецПроцедуры

Результат работы процедуры

173.194.73.101
 
 Рекламное место пустует
   Mikhail Volkov
 
61 - 16.11.20 - 18:29
(60) Адрес не IP-адрес, а ИмяКомпьютера.Домен;!?
   NorthWind
 
62 - 16.11.20 - 18:37
(61)

> where Address = 'google.com'
Здесь вместо google.com указываете perseus.corp.akit или что там у вас было.
Запускаете на выполнение - получаете IP-адрес, при условии что машина доступна.
   Mikhail Volkov
 
63 - 16.11.20 - 19:13
(62) вместо google.com указываю perseus, получаю Адрес: perseus.corp.akit, а не 10.0.13.129!?
   NorthWind
 
64 - 16.11.20 - 19:26
(63) Попробуйте
> Адрес = objStatus.ProtocolAddress;
вместо
> Адрес = objStatus.ProtocolAddressResolved;
   Mikhail Volkov
 
65 - 16.11.20 - 19:37
(64) Получилось, спс!
   Mikhail Volkov
 
66 - 17.11.20 - 07:03
С WMI сталкиваюсь впервые, случись что, поправить не смогу...
(56) В твоем варианте: Shell.Run("ping -n 1 -w 400 " + ИмяКомпьютера, 0, Истина), если компьютер доступен, результат 0. Возможно получить его IP-адрес без мигания черного окна?
   NorthWind
 
67 - 17.11.20 - 09:03
Вариант, как избежать консольного окна, вам дали еще в (39). Но как бы очевидно, что делать это вы не будете.
То есть вы и с запуском процесса не особо хотите разбираться.
Ну и какая разница, в чем вы не разбираетесь? :)))
   Mikhail Volkov
 
68 - 17.11.20 - 09:14
(67) Пытаюсь разобраться, возможно ли получить IP-адрес? В постах (56) не нашел ответа.
   NorthWind
 
69 - 17.11.20 - 09:23
(68) Если через вызов программы - тогда только разбирая вывод пинга.
что довольно муторно и чревато ошибками, если вывод по какой-то причине поменяется - в этом случае разборщик может ошибиться.
Я бы не стал этого делать.
   Mikhail Volkov
 
70 - 17.11.20 - 09:41
(69) > Если через вызов программы - тогда только разбирая вывод пинга.
В (0) уже сделано: Сред(strPingResults, Найти(strPingResults, "[") + 1, Найти(strPingResults, "]") - Найти(strPingResults, "[") - 1)), только как strPingResults получить? В (0) получаю objScriptExec.StdOut.ReadAll().
   NorthWind
 
71 - 17.11.20 - 09:50
(70) Shell.Run, насколько я знаю, не позволяет перенаправлять стандартный ввод-вывод, соответственно, с его помощью вывод программы вы не заберете для парсинга.
Для этого годится только Shell.Exec.
Соответственно, выходит что нужно делать вариант (25), но, чтобы избежать вывода консольного окна, придется завернуть все это в VBS-скрипт по совету из (39).
   Mikhail Volkov
 
72 - 17.11.20 - 10:18
(71) Как завернуть все это (25) в VBS-скрипт?
   NorthWind
 
73 - 17.11.20 - 10:56
(72) Через MSScriptControl.ScriptControl, например, можно попробовать. Но с этим будут проблемы на 64-битной 1С.
Можно скрипт сохранить как временный файл и натравить на него wscript.exe, правда, я не исключаю что тут опять вылезет окно, и кроме того, непонятно как отдать результат.
В общем, хрен его знает. Я точно не буду заниматься подобными извращениями, потому что есть рабочий вариант (60), простой и понятный.
   mistеr
 
74 - 17.11.20 - 12:28
(72) Вот vbs обертка для произвольного батника
    Dim shell,command
    ScriptDir = WScript.ScriptFullName
    ScriptDir = Left(ScriptDir, Len(ScriptDir) - Len(WScript.ScriptName))
    command = "cmd.exe /c " & ScriptDir & "ping_test.cmd"
    Set shell = CreateObject("WScript.Shell")
    shell.Run command,0

"ping_test.cmd" заменить на имя вашего батника, лежащего рядом с оберткой.
   Mikhail Volkov
 
75 - 17.11.20 - 13:21
(74) Куда писать эту vbs-обертку, 1С поймет это? Батник отдельным файлом должен лежать? Какой он должен быть, чтобы формировал ответ на команду: "ping.exe -n 1 " + ИмяКомпьютера, что-то типа (9) или (10)?
   lEvGl
 
76 - 17.11.20 - 13:23
Микхаил...
   mistеr
 
77 - 17.11.20 - 13:58
(75) Если хочешь парсить вывод, то да батник отдельным файлом, в нем две строки, chcp и ping.
   mistеr
 
78 - 17.11.20 - 13:59
А вообще, если посмотреть шире, на удаленном хосте какой сервис интересует? Если HTTP, то по HTTP и пингуй. В 1С все есть, не надо возиться с батниками.
   Mikhail Volkov
 
79 - 17.11.20 - 14:03
(51) > чем (34) не устраивает? три строки кода
Да, и черное окно не мелькает, но только определяет доступность компьютера. А IP-адрес - нет. Думал не сложно добавить, а оказалось...
   Mikhail Volkov
 
80 - 17.11.20 - 14:14
(78) В Альфа-Авто 4.1 вроде нет HTTP сервиса. Функцию PingIP_Адреса() писал с появлением онлайн-кассы общей в использовании. Потом ее использовал еще где-то.
   mistеr
 
81 - 17.11.20 - 14:22
(80) Ты не понял наверное. Я спрашиваю, ты сейчас конкретный хост с какой целью мониторить хочешь? Чтобы потом использовать какой-то сервис на этом хосте. Какой?
   Mikhail Volkov
 
82 - 17.11.20 - 14:37
(81) Ничего не хочу мониторить. В последний раз смотрел ее отладчиком при подключении удаленного пользователя, увидел абракадабру, засомневался...
   mistеr
 
83 - 17.11.20 - 14:41
(82) А, понятно. Может быть она и "много лет" неправильно работала...
   lEvGl
 
84 - 17.11.20 - 14:43
доменную авторизацию он мониторит и попутно видимо еще какая история с входом в домен и доступностью машин, может имена компов и их адреса в актуальном состоянии поддерживать хочет, в целом админская хрень какая то
   Mikhail Volkov
 
85 - 17.11.20 - 14:55
(84) У удаленных пользователей бывают проблемы с онлайн-кассой, поэтому в ЖР пишется как он зашел, с какого компьютера. К функции (0) не было нареканий, кроме мелькания черного окна.
   lEvGl
 
86 - 17.11.20 - 14:57
+ (85) кроме мелькания черного окна и албанского языка
   Mikhail Volkov
 
87 - 17.11.20 - 15:16
(86) Абракадабра не мешает, фрагмент "ttl=" не искажается, просто засомневался при отладке.
   Mikhail Volkov
 
88 - 17.11.20 - 18:12
В теме v8: Ошибка выполнения команды WshShell.Run приводится такой фрагмент:
WshShell = новый ComОбъект("WScript.Shell");
RetCode = WshShell.Run("команда",0,Истина).StdOut;
Сообщить(RetCode);
У меня ошибку дает: Значение не является значением объектного типа (StdOut)?
   NorthWind
 
89 - 17.11.20 - 18:34
(88) Нет там .StdOut. Не путайте с Exec. См. (71), я там об этом писал уже.
   Mikhail Volkov
 
90 - 17.11.20 - 18:51
(89) Да, видимо там ошибочно так написано.
   Mikhail Volkov
 
91 - 18.11.20 - 08:02
> Скрипты лучше выполнять непосредственно движком, без всяких файлов. (Запуск "*.vbs" из 7.7... проблема)
Еще бы таких примеров, чтобы понять как пишутся VBS-скрипты без bat-файлов...
   NorthWind
 
92 - 18.11.20 - 08:59
(91) лучше-то лучше. Но нужно иметь в виду, что эта штука (ScriptControl) есть только x32.
Соответственно, если планируется переходить или использовать x64 клиентов или выполнять на сервере, то могут быть траблы.
   NorthWind
 
93 - 18.11.20 - 09:01
вообще, конечно, раздуть такую хрень на сто постов из-за того чтобы комп попинать/адрес отрезольвить - это только 1Сники могут :) Там где нормальные программисты бы все давно сделали встроенными библиотеками, тут на полном серьезе двое суток обсуждается как ping.exe запустить :))))
   Mikhail Volkov
 
94 - 18.11.20 - 09:15
(92) Альфа-Авто x64 (не УФ), но клиентская часть 32-разрядная, иначе торговое оборудование не работает.
(93) VBS-скриптами и bat-файлами почти не пользуюсь, не разбираюсь... время есть, пытаюсь разобраться.
   NorthWind
 
95 - 18.11.20 - 09:23
(94) ну если на 32-битность плевать, то можно попытаться сделать как написано в 6-м посте по ссылке в (91).
   Djelf
 
96 - 18.11.20 - 09:31
(93) Так сделали уже http://catalog.mista.ru/public/975147/
   NorthWind
 
97 - 18.11.20 - 09:41
(96) кстати, (0) это тоже могло бы быть интересно, тем более что компоненту отдают бесплатно.
   Mikhail Volkov
 
98 - 18.11.20 - 10:28
(97) Посмотреть бы ее, не скачивается...? А у тебя скачивается? Если Да, то перешли мне на mv@olympus.ru
   Djelf
 
99 - 18.11.20 - 10:32
(98) В 3м сообщении ссылка на обработку, вк`шки внутри.
   Сияющий в темноте
 
100 - 18.11.20 - 10:34
Имя компьютера в адрес это же DNS или WINS
причем тут пинг?
nslookup может быть?
  1  2   

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.