1

Я пытаюсь каталогизировать, какие SMTP-серверы используются в гетерогенном пуле серверов, и до сих пор я делал:

echo "HELO localhost"  | telnet localhost 25 2>/dev/null | grep 220
#process the output of command

Моя проблема в том, что сервер не всегда успевает ответить «220 ...» до закрытия сокета.

Поэтому я ищу относительно короткий скрипт на основе bash, который был бы немного более надежным. Я не смог найти простой способ заставить команду подождать несколько секунд перед закрытием TCP-соединения.

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

Есть простые идеи?

РЕДАКТИРОВАТЬ: версии (да, старые, я знаю):

  • Баш-2.05b-41,7
  • Coreutils-4.5.3-28.1
  • Linux-2.4.21

2 ответа2

1

Используйте возможности nmap(1) снятия отпечатков с man-страницы:

SERVICE/VERSION DETECTION:
-sV: Probe open ports to determine service/version info

Пример:

$ nmap -sV some.mail.server.biz -p 25

Starting Nmap 6.40 ( http://nmap.org ) at 2013-09-17 17:50 CEST
    Nmap scan report for some.mail.server.biz (10.0.0.135)
Host is up (0.0052s latency).
PORT   STATE SERVICE VERSION
25/tcp open  smtp    MailEnable smptd 7.08--7.08
Service Info: Host: some.domain.com; OS: Windows; CPE: cpe:/o:microsoft:windows

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 13.67 seconds

Я не знаю, полезно ли это для вас, но в выводе используется CPE.

0

Боб в чате предложил использовать подоболочку, включая сон между двумя эхом.

Это работает как шарм:

( echo "EHLO `hostname`"; sleep 1; echo "QUIT" ) | telnet `hostname` 25

Теперь я могу получить grep 220 , и я уверен, что получу ответ в течение одной секунды.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .