Получить все подключенные IP-адреса на машине Linux

Недавно в интервью мне задали вопрос, который я не смог сделать. У кого-нибудь есть решение для этого?

Grab all connected IP´s on the Linux machine
check every connected IP if TCP port 1706 is open

if its open > execute command.  CURL ‘http:// some address ’ 
Else do nothing.
program will check this every 60 minits



Plattform Linux Ubuntu Server 12. X64 / x32

WAP в C++

Спасибо!!

2 ответа

Решение

Сделайте скрипт bash.

LOGIC:

использование netstat -natp (отфильтруйте это через awk/sed чтобы получить порты, затем grep это) Затем используйте простой тест, чтобы увидеть, если результат был пустым. Бежать curl если бы это было

Поместите это в работу cron. Простые вещи, правда.

РЕДАКТИРОВАТЬ:

netstat это утилита, которая покажет вам все соединения на вашем компьютере. netstat -natp показывает список программ, которые имеют сокеты tcp на вашем компьютере.

sed а также awk используются для форматирования текста. Вы можете использовать их, чтобы перечислить конкретный столбец.

grep ищет вход, чтобы найти указанную строку.

bash допускает базовую логику и может использоваться, чтобы увидеть, является ли строка пустой.

cron это процесс Linux, который планирует команды для запуска в определенное время.

РЕДАКТИРОВАТЬ № 2:

Вы могли бы опрос /proc/net/tcp, но с тех пор netstat делает это и форматирует это хорошо, зачем?

В Linux вы ищите файлы в /proc/net и разобрать это.

Например, TCP-соединения перечислены в /proc/net/tcp

head /proc/net/tcp

покажет что-то вроде этого

  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode                                                     
   0: 00000000:0007 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 38148735 1 0000000000000000 100 0 0 10 -1                 
   1: 00000000:1F48 00000000:0000 0A 00000000:00000000 00:00000000 00000000   116        0 38923158 1 0000000000000000 100 0 0 10 -1                 
   2: 00000000:0CEA 00000000:0000 0A 00000000:00000000 00:00000000 00000000   120        0 12364094 1 0000000000000000 100 0 0 10 -1                 
   3: 0100007F:13AD 00000000:0000 0A 00000000:00000000 00:00000000 00000000  1000        0 26454267 1 0000000000000000 100 0 0 10 -1                 
   4: 0100007F:008F 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 5570 1 0000000000000000 100 0 0 10 -1                     
   5: 00000000:0050 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 27328173 1 0000000000000000 100 0 0 10 -1                 
   6: 0100007F:1913 00000000:0000 0A 00000000:00000000 00:00000000 00000000   116        0 38923868 1 0000000000000000 100 0 0 10 -1                 
   7: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 18983193 1 0000000000000000 100 0 0 10 -1                 
   8: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 38681424 1 0000000000000000 100 0 0 10 -1                 

Затем вы можете разделить линии, найти открытые соединения и действовать соответственно. Посмотрите на источник netstat для большего.

Другие вопросы по тегам