Недавно в интервью мне задали вопрос, который я не смог сделать. У кого-нибудь есть решение для этого?
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 minitsPlattform Linux Ubuntu Server 12. X64 / x32
WAP в C ++
Спасибо!!
Сделайте скрипт 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
для большего.