Дважды SSH, затем выполните NC с помощью пакетного файла и Plink

Дважды SSH, затем выполните NC с помощью пакетного файла и Plink

Доброе утро, мне нужно выполнить команду netcat и получить вывод для обработки на моем локальном ПК (windows). Мне просто нужно "подключение хорошее/плохое"

Теперь я использую PuTTY, используя следующий шаг

  • Окна -> PuTTY
  • PuTTY -> SSH на «Server1» (Linux Suse)
  • Оболочка сервера 1 -> SSH на «Сервере 2» (Linux Suse)
  • Оболочка сервера2 ->nc -zv 10.xx.xx.xx yyyy

Я хотел бы создать простой скрипт для автоматизации процесса, я пытаюсь сделать это через пакет и plink. Я могу использовать другое программное обеспечение или языки, но я не очень эксперт

Я не могу ничего установить на Linux-сервер, так как это живые серверы, и я не могу делать слишком много попыток, но я должен сделать это без сбоев. Необходимо выполнить эти шаги для проблемы с брандмауэром, так как сервер 1 не видит конечный сервер, но видит сервер 2, который в свою очередь видит конечный сервер

Я составил следующую команду, но не уверен, работает ли она

plink -ssh %server1% -pw %password% -no-antispoof -proxycmd "ssh %User%@%server2% -pw %password%" -m commands.txt > result.txt 2>&1

решение1

Во-первых, чтобы выполнить sshкоманду на сервере server1, нужно подключиться к серверу server2 и выполнить команду там. Синтаксис следующий:

plink -ssh %server1% -pw %password% -no-antispoof "ssh %User%@%server2% nc -zv 10.xx.xx.xx yyyy" > result.txt 2>&1

Но вам нужно передать пароль в ssh. Для этого вам нужно добавить -tпереключатель, plinkчтобы включить pty и передать пароль сервера2 в качестве входных данных в plink:

echo %password2%|plink -t ...

Обратите внимание, что это раскроет пароль вашего server2 в списке процессов локальной машины. Но поскольку вы уже делаете это для пароля server1, вы, вероятно, не против. Хотя последнее можно обойти с помощью -pwfileswitch. А первое — с помощью других видов перенаправления ввода.

Связанный контент