Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 9

Как пропинговать IP-адреса, содержащиеся в XML-файле?

19.03.2016, 23:26. Показов 2326. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть некий массив из xml файла:

XML
1
2
3
 <webservers>
      <server address="http://1.1.1.1/"/>
      <server address="http://1.1.1.2/"/>
Как вытянуть айпишки и пропинговать их? Спасибо за помощь!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.03.2016, 23:26
Ответы с готовыми решениями:

Пропинговать все адреса из 10 TextBox и покрасить в зеленый цвет если есть пинг
Имеется 10 текстбоксов в которых записаны IP адреса - пропинговать все адреса и покрасить в зеленый цвет если есть пинг и если нет пинга то...

Строка: найти все IP-адреса, содержащиеся в тексте
помогите пожалуйста,завтра к экзамену надо написать программы и сдать к\работу! надо написать 3,4 и 5 задачи!!!

Как обновить данные в файле xml на основе другого xml?
Добрый день! Мне необходимо разработать XSLT преобразование, которое будет обновлять данные в файле formats.xml (узлы name, shortName,...

13
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
20.03.2016, 00:23
Modular, как-то так:
PowerShell
1
2
3
4
5
[xml]$servers = Get-Content 'webservers.xml'
foreach ($address in $servers.DocumentElement.SelectNodes("./server/@address")) {
    $uriHost = ([System.Uri]$address.Value).Host
    ping $uriHost
}
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 9
20.03.2016, 00:46  [ТС]
Смотрите, задача такая, есть xml файл:

XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <Monitoring PullInterval="2">
    <servers>
      <server ip="1.1.1.100" port="8880" type="ComputationNode"/>
    </servers>
    <webservers>
      <server address="http://1.1.1.1/"/>
      <server address="http://1.1.1.2/"/>
    </webservers>
  </Monitoring>
</configuration>
Мне нужно написать скрипт который парсит этот файл проходиться по секциям <servers> и <webServers>, вытаскивает айпишку, пропинговывает и список тех которые не пингуется ставит в файл с названием например not_accessible.txt
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
20.03.2016, 02:07
Цитата Сообщение от Modular Посмотреть сообщение
Мне нужно написать скрипт который парсит этот файл проходиться по секциям <servers> и <webServers>, вытаскивает айпишку, пропинговывает и список тех которые не пингуется ставит в файл с названием например not_accessible.txt
PowerShell
1
2
$regex = [regex]"\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
($regex.Matches((gc C:\Temp\test.xml))).Value | %{if(!(Test-Connection $_ -q -cou 2)){$_ | ac C:\Temp\not_accessible.txt}}
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
20.03.2016, 02:17
PowerShell
1
2
3
4
5
6
7
8
9
[xml]$servers = Get-Content 'webservers.xml'
foreach ($address in $servers.DocumentElement.SelectNodes("//webservers/server/@address")) {
    $uriHost = ([System.Uri]$address.Value).Host
    Write-Host "Checking $uriHost"
    $reply = Get-WmiObject -Class Win32_PingStatus -Filter "Address='$uriHost' and Timeout=4000"
    if ($reply.StatusCode -ne 0) {
        Add-Content not_accessible.txt $uriHost
    }
}
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
20.03.2016, 02:23
И без сокращений
Кликните здесь для просмотра всего текста

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$xml = Get-Content -Path 'C:\Temp\test.xml'
$OutFile = 'C:\Temp\not_accessible.txt'
 
$regex = [regex]"\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
 
Set-Content -Path $OutFile -Value $null
 
foreach ($IP in $regex.Matches($xml) | Select-Object -ExpandProperty Value)
{
    if(-not (Test-Connection -ComputerName $IP -Quiet -Count 2))
    {
        Add-Content -Value $IP -Path $OutFile
    }
}
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 9
20.03.2016, 02:29  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
PowerShell
1
2
3
4
5
6
7
8
9
[xml]$servers = Get-Content 'webservers.xml'
foreach ($address in $servers.DocumentElement.SelectNodes("//webservers/server/@address")) {
    $uriHost = ([System.Uri]$address.Value).Host
    Write-Host "Checking $uriHost"
    $reply = Get-WmiObject -Class Win32_PingStatus -Filter "Address='$uriHost' and Timeout=4000"
    if ($reply.StatusCode -ne 0) {
        Add-Content not_accessible.txt $uriHost
    }
}
Огромное спасибо, а как сюда же вставить секцию и для <servers>...извините, только начал учить powershell, много вопросов
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
20.03.2016, 03:45
Цитата Сообщение от Modular Посмотреть сообщение
а как сюда же вставить секцию и для <servers>
А чем не устроил пример из ответа #4 (или #6)? Он все IP выбирает и проверяет...

А если без регулярного выражения и перебирать только секции <servers> и <webServers>, то можно ещё так:

PowerShell
1
2
3
4
5
6
7
8
9
10
11
$xml = [Xml](Get-Content -Path 'C:\temp\test.xml')
foreach ($item in $xml.SelectNodes("//server"))
{
    if($item.ip) {$ip = $item.ip}
    elseif ($item.address) {$ip = ([System.Uri]$item.address).Host}
    
    if(-not (Test-Connection -ComputerName $ip -Quiet -Count 2))
    {
        Add-Content -Value $ip -Path 'C:\Temp\not_accessible.txt'
    }
}
Добавлено через 32 минуты
+ тоже, но в одну строчку

PowerShell
1
([Xml](gc servers.xml)).SelectNodes("//server")|%{if($ip=$_.ip){}else{$ip=([Uri]$_.address).Host};if(!(Test-Connection $ip -q)){ac no_access.log $ip}}
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 9
20.03.2016, 18:02  [ТС]
Большое Вам спасибо...а ещё такое, тот же xml, но задача - добавить в секцию <webServers> запись для сервера з ІР = 10.1.1.3, а запись для сервера з ІР = 10.1.1.1 удалить...

Добавлено через 12 часов 57 минут
Помогите пожалуйста...очень нужно

Добавлено через 1 час 15 минут
Написал такую строку:

PowerShell
1
Get-Content -Path 'd:\test_config.xml' | ForEach-Object {$_ -replace '"http://1.1.1.1/"','"http://1.1.1.3/"'} | Set-Content 'd:\test_config.xml'
Из оболочки шела всё работает, но при вызове самого скрипт файла из системы - ошибка Set-Content : процесс не может получить доступ к файлу "d:\test_config.xml", так как этот файл используеться другим процессом.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
20.03.2016, 20:38
Modular,

PowerShell
1
2
3
$xml = [xml](gc 'd:\test_config.xml')
($xml.SelectNodes("//webservers/server") | ? address -eq 'http://1.1.1.1/').address = 'http://1.1.1.3/'
$xml.Save('d:\test_config.xml')
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 9
20.03.2016, 23:09  [ТС]
Спасибо, а если задача не заменить адреса а добавить в секцію <webServers> запись для сервера з ІР = 10.1.1.3, а запись для сервера з ІР = 10.1.1.1 видалить
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 9
20.03.2016, 23:44  [ТС]
PowerShell
1
2
3
$xml = [xml](gc 'd:\test_config.xml')
($xml.SelectNodes("//webservers/server") | ? address -eq 'http://1.1.1.1/').address = 'http://1.1.1.3/'
$xml.Save('d:\test_config.xml')
не работает

0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
21.03.2016, 00:44
Цитата Сообщение от Modular Посмотреть сообщение
не работает
Какая у вас версия PS?

Попробуйте так:

PowerShell
1
2
3
4
$xml = [xml](gc 'd:\test_config.xml')
$webserver = $xml.SelectNodes("//webservers/server") | ?{$_.address -eq 'http://1.1.1.1/'}
$webserver.address = 'http://1.1.1.3/'
$xml.Save('d:\test_config.xml')
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 9
21.03.2016, 01:19  [ТС]
Огромное человеческое спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.03.2016, 01:19
Помогаю со студенческими работами здесь

Как в .xml файле проверить существование xml элемента
Читаю xml данные так: Dim xdoc As XDocument = XDocument.Load(&quot;data\Sips.xml&quot;) ...

Cохранить объекты, содержащиеся в Canvas в .xml
Всем доброго времени суток. Только начал изучать С#. Сталкнулся со следующей задачей: необходимо сохранить объекты (прямоугольники,...

Содержащиеся в файле числа выделить и записать в новый файл
Создайте программу, которая, читая текстовый файл, состоящий строк длинной 60 символов, определяет содержащиеся в нём числа и записывает их...

Отсортировать по убыванию числа, содержащиеся в файле, и записать их в другой файл
В Файле А есть 10 чисел, отсортировать их по убыванию и записать в файл Б

Преобразовать каждый из массивов, содержащихся в файле, переставив содержащиеся в нем пробелы в его конец
Дан файл f, компонентами которого являются символьные массивы a1, a2, ..., а10. Требуется преобразовать каждый из массивов, переставив...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru