Как проверить, что маршрут существует между двумя хостами к конкретному порту?

Определенная проблема, которую Вы имеете, является этим MSIEXEC, названный тем способом, выполнения асинхронно. Выполните его с a start /wait msiexec ... команда и Вы получите то, что Вы ищете.

Однако Вы копируете подмножество функциональности, это уже встроено в клиент Групповой политики. Необходимо исследовать политику Установки программного обеспечения видеть то, что она может сделать для Вас. Можно создать довольно масштабируемую, детерминированную автоматизированную среду установки программного обеспечения, не пишущий сценариев. Это не прекрасно, но это делает задание в большом количестве случаев. Для Следующего GuyTM также будет намного легче понять, чем лабиринт сценариев пакетной обработки создание этого пути.

5
задан 7 August 2013 в 07:17
4 ответа

с помощью 'ip route get ADDRESS' вы можете проверить маршрут , настроенный в вашей системе, то есть первый переход:

$ ip route get 192.168.10.10
192.168.10.10 via 192.168.10.1 dev eth0  src 192.168.10.11 
    cache 

, чтобы проверить подключение порта, простой telnet должен делать:

$ telnet 192.168.10.10 1433
...

удачи!

6
ответ дан 3 December 2019 в 01:02

Мне очень нравится mtr http://www.bitwizard.nl/mtr/ . Версия для Windows также доступна по адресу http://winmtr.net/

1
ответ дан 3 December 2019 в 01:02

Прежде всего, вы должны знать, что действие route происходит на сетевом уровне , а порт определен на ] Транспортный уровень . Итак, если существует маршрут между двумя хостами, это не означает, что вы можете достичь порта в хосте.

Представьте, что два хоста - это два дома, порт - ворота дома, маршрут - дорога. Вы можете построить много дорог между домами. Но когда вы подойдете к дому, если ворота дома закрыты, вы не сможете войти.

ОБНОВЛЕНИЕ

Для вашего комментария, вы можете использовать некоторую команду, например:

Чтобы проверить, существует ли маршрут:

  • route
  • traceroute

Чтобы проверить открытый порт:

  • telnet
  • netcat

Прочтите его справочную страницу и попробуйте использовать.

5
ответ дан 3 December 2019 в 01:02

Как уже упоминалось, наличие маршрута не обязательно означает, что у вас есть возможность подключения. Если это то, что вы хотите проверить, netcat предлагает параметр -z для сканирования, чтобы увидеть, открыт ли порт. (Вы также можете указать тайм-аут с помощью -w , если у вас может не быть маршрута; тайм-аут по умолчанию обычно составляет пару минут.)

$ nc -z 127.0.0.1 22; echo $?
0
$ nc -z 127.0.0.1 11; echo $?
1

Вы можете использовать код выхода, чтобы что-то сделать ( или нет) в зависимости от того, продемонстрировали ли вы подключение к этому адресу и порту:

if nc -z 127.0.0.1 22; then
    echo "SSH server is available."
else
    echo "Cannot connect to SSH server."
fi

Параметр -v сделает вывод более подробным, и его можно использовать для сканирования диапазона портов :

$ nc -vz 127.0.0.1 22-25
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
nc: connect to 127.0.0.1 port 23 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 24 (tcp) failed: Connection refused
Connection to 127.0.0.1 25 port [tcp/smtp] succeeded!
$ echo $?
0

Как показано выше, в режиме многопортового сканирования код выхода будет истинным (0), если соединение с любым из портов удалось, или ложным в противном случае.

Существует несколько различных версий netcat ; в приведенных выше примерах использовался пакет netcat-openbsd из Debian 9, который представляет собой переработанный пакет netcat ( netcat-традиционный пакет). По этим параметрам и кодам выхода традиционная версия практически аналогична. Если у вас возникли проблемы с параметрами командной строки netcat и кодами выхода, проверьте, какую версию вы используете; ls -l / bin / nc * может дать некоторое представление.

1
ответ дан 3 December 2019 в 01:02

Теги

Похожие вопросы