2013-02-16 5 views
-3

Récemment, on m'a posé une question dans une interview que je ne pouvais pas faire. Quelqu'un at-il une solution pour cela?Obtenir tous les IP connectés sur la machine 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 en C++

Merci !!

+0

sûrement vous pouvez faire certaines parties de celui-ci. quelle est votre question? –

+0

ques est ce que j'ai mentionné ci-dessus – user1845209

Répondre

1

Créez un script bash.

LOGIC:

Utilisez netstat -natp (filtrer par awk/sed pour obtenir les ports, puis grep il) Ensuite, utilisez un simple test pour voir si le résultat était vide. Exécutez curl si c'était le cas.

Mettez cela dans un travail cron. Des trucs simples, vraiment.

EDIT:

netstat est un utilitaire qui vous montrera toutes les connexions sur votre ordinateur. netstat -natp affiche la liste des programmes dotés de sockets TCP sur votre ordinateur.

sed et awk sont utilisés pour la mise en forme du texte. Vous pouvez les utiliser pour lister une colonne spécifique.

grep recherche une chaîne spécifiée. Bash permet la logique de base, et peut être utilisé pour voir si une chaîne est vide.

cron est un processus Linux qui planifie l'exécution des commandes à certains moments.

EDIT # 2:

Vous POURRIEZ sondage /proc/net/tcp, mais depuis netstat fait cela et formate bien, pourquoi la peine?

+0

désolé .. je n'ai pas compris. Pouvez-vous élaborer? – user1845209

+0

là, mis à jour pour expliquer plus en détail. – cyphar

+0

merci pour cela .. :) – user1845209

0

Sous Linux, recherchez les fichiers dans /proc/net et analysez-les.

Par exemple, les connexions TCP sont répertoriés dans /proc/net/tcp

head /proc/net/tcp 

montrera quelque chose comme ça

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     

Vous pouvez alors les lignes, diviser rechercher les connexions ouvertes et agir en conséquence. Regardez la source de netstat pour plus.

Questions connexes