-3

最近、面接でできなかった質問がありました。誰かがこれに対する解決策を手に入れましたか?

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

C++でのWAP

ありがとう!!

4

2 に答える 2

1

bashスクリプトを作成します。

論理:

を使用します( /netstat -natpでフィルタリングしてポートを取得し、次にgrepを実行します)次に、簡単なテストを使用して、結果が空であるかどうかを確認します。もしそうなら実行します。awksedcurl

これをcronジョブに入れます。単純なもの、本当に。

編集:

netstatコンピュータ上のすべての接続を表示するユーティリティです。netstat -natpは、コンピュータにtcpソケットがあるプログラムのリストを示しています。

sedおよびawkテキストの書式設定に使用されます。それらを使用して、特定の列を一覧表示できます。

grep入力を検索して、指定された文字列を見つけます。

bashは基本的なロジックを可能にし、文字列が空かどうかを確認するために使用できます。

cronは、特定の時間に実行されるコマンドをスケジュールするLinuxプロセスです。

編集#2:

あなたは投票することができます/proc/net/tcpが、netstatそれはそれをうまくフォーマットしているので、なぜわざわざするのですか?

于 2013-02-16T13:21:16.840 に答える
0

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してください。

于 2013-02-16T13:30:11.027 に答える